黑马程序员技术交流社区

标题: 大家帮帮忙啊!javaBean的问题 [打印本页]

作者: 李月    时间: 2012-6-1 10:57
标题: 大家帮帮忙啊!javaBean的问题
  1. import java.beans.IntrospectionException;
  2. import java.beans.PropertyDescriptor;
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.lang.reflect.Method;


  5. public class MethodMain {

  6.         /**
  7.          * @param args
  8.          * @throws InvocationTargetException
  9.          * @throws IllegalAccessException
  10.          * @throws IntrospectionException
  11.          * @throws IllegalArgumentException
  12.          */
  13.         public static void main(String[] args) throws IllegalArgumentException, IntrospectionException, IllegalAccessException, InvocationTargetException {
  14.                 // TODO Auto-generated method stub
  15.                 Person obj=new Person();
  16.                 String propertyName="setName";
  17.                 Object value="lisi";
  18.                 setProperty(obj,propertyName,value);
  19.                 System.out.println(obj.getName());
  20.                
  21.         }
  22.         public static void setProperty(Object obj,String propertyName,Object value) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
  23.         {
  24.                 PropertyDescriptor pd=new PropertyDescriptor(propertyName,obj.getClass());
  25.                 Method me=pd.getWriteMethod();
  26.                 me.invoke(obj, value);
  27.         }

  28. }
  29. class Person
  30. {
  31.         private String name;
  32.         private int age;
  33.         public Person()
  34.         {}
  35.         public Person(String name,int age)
  36.         {
  37.                 this.name=name;
  38.                 this.age=age;
  39.         }
  40.         public void setName(String name)
  41.         {
  42.                 this.name=name;
  43.                
  44.         }
  45.         public String getName()
  46.         {
  47.                 return name;
  48.         }
  49.        
  50. }
复制代码
提示错误:

Exception in thread "main" java.beans.IntrospectionException: Method not found: isSetName
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:89)
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:53)
        at MethodMain.setProperty(MethodMain.java:27)
        at MethodMain.main(MethodMain.java:21)


求解决。

作者: 杜俊彪    时间: 2012-6-1 12:34
楼主你这个propertyName="setName"错了,   由这个名字就可以看出,propertyName的意思是属性名,   很显然propertyName="name" ;    这样就没错了,  
作者: 江南    时间: 2012-6-1 20:37
Exception in thread "main" java.beans.IntrospectionException: Method not found: isSetName
意思就是 找不到 这个方法 就是你的方法名称写错了
说明isSetName()搞错了
setProperty(obj,propertyName,value);
其中obj就是你要修改的对象,第二个参数 就是要修改的属性, 第三个参数就是需要修改属性的值
作者: 杜俊彪    时间: 2012-6-1 23:30
1楼花了好几分钟才找出这个错误,说的也“一针见血” 都不给加分,   伤不起啊,  {:soso_e123:}
作者: 杜俊彪    时间: 2012-6-2 20:49
杜俊彪 发表于 2012-6-1 23:30
1楼花了好几分钟才找出这个错误,说的也“一针见血” 都不给加分,   伤不起啊,   ...

还是谢楼主,   尽管我还缺技术分,  不过, 也缺钱用,   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2