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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李月 中级黑马   /  2012-6-1 10:57  /  1448 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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)


求解决。

4 个回复

倒序浏览
楼主你这个propertyName="setName"错了,   由这个名字就可以看出,propertyName的意思是属性名,   很显然propertyName="name" ;    这样就没错了,  
回复 使用道具 举报
Exception in thread "main" java.beans.IntrospectionException: Method not found: isSetName
意思就是 找不到 这个方法 就是你的方法名称写错了
说明isSetName()搞错了
setProperty(obj,propertyName,value);
其中obj就是你要修改的对象,第二个参数 就是要修改的属性, 第三个参数就是需要修改属性的值

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
1楼花了好几分钟才找出这个错误,说的也“一针见血” 都不给加分,   伤不起啊,  {:soso_e123:}

评分

参与人数 1黑马币 +30 收起 理由
李月 + 30 我只能送你点钱了!你说的是对的。.

查看全部评分

回复 使用道具 举报
杜俊彪 发表于 2012-6-1 23:30
1楼花了好几分钟才找出这个错误,说的也“一针见血” 都不给加分,   伤不起啊,   ...

还是谢楼主,   尽管我还缺技术分,  不过, 也缺钱用,   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马