A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 唐辉辉 于 2012-6-24 10:51 编辑
  1. import org.apache.commons.beanutils.BeanUtils;


  2. public class BeanUtilsDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) throws Exception {
  7.                 // TODO Auto-generated method stub
  8.                 BeanUtilsData bud = new BeanUtilsData(3, 9);
  9.                
  10.                 BeanUtils.setProperty(bud, "y", "19");
  11.                 System.out.println(bud.getY());
  12.                 //System.out.println(BeanUtils.getProperty(isd, "y"));
  13.         }

  14. }

  15. class BeanUtilsData{
  16.         
  17.         private int x;
  18.         private int y;
  19.         
  20.         public BeanUtilsData(int x, int y) {
  21.                 super();
  22.                 this.x = x;
  23.                 this.y = y;
  24.         }
  25.         public int getX() {
  26.                 return x;
  27.         }
  28.         public void setX(int x) {
  29.                 this.x = x;
  30.         }
  31.         public int getY() {
  32.                 return y;
  33.         }
  34.         public void setY(int y) {
  35.                 this.y = y;
  36.         }
  37. }
复制代码
Exception in thread "main" java.lang.reflect.InvocationTargetException: Cannot set y
        at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1019)
        at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:456)
        at BeanUtilsDemo.main(BeanUtilsDemo.java:13)
Caused by: java.lang.NoSuchMethodException: Property 'y' has no setter method in class 'class BeanUtilsData'
        at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2138)
        at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1957)
        at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2064)
        at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1017)
        ... 2 more


报错的地方现在已经找到,需要把JavaBean类修饰为public的。但为什么要修饰为public呢?  有没有朋友知道原因?


评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
菜鸟答题{:soso_e113:}这个问题涉及到一些javabean的规范。先从javabean的用途说起,javabean一般就是用来传递数据的特殊java类,在web开发中应用较多。简单说javabean多用于封装属性,而很少具备某些特定的方法功能。试想,javabean的功能就是传递数据,那么类权限为共有也就不足为奇了。下面是标准javabean要遵守的一些规范:
1. 类访问权限为公有
2. 所有属性为私有
3. 每个字段对外提供setter方法和getter方法
4. 具备一个无参的构造方法

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 45分的菜鸟,你可以继续吹么?.

查看全部评分

回复 使用道具 举报
赵玮_Tom 发表于 2012-6-24 10:47
菜鸟答题这个问题涉及到一些javabean的规范。先从javabean的用途说起,javabean一般就是用来 ...

明白了。谢谢 !!
回复 使用道具 举报
你好以上两位哥们,javaBean用成public无非就是让所有的其他类能够访问而已。那么上述例子中我将javaBean定义为一个内部类,通过外部类构建起对象,在通过BeanUtils来操作javaBean,理论上是可以访问到的呀!但是为什么不行里?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马