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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 万马奔腾 于 2014-6-2 18:35 编辑

定义的User类如下:
public class User {
        
        private String name;

        public User(String name) {
                super();
                this.name = name;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
}

用内省操作代码如下:

import java.beans.*;
import java.lang.reflect.Method;

public class IntrospectorTest {

        public static void main(String[] args) throws Exception {
               
                User user = new User("zhangsan");
                String uName = "lisi";
                setProperty(user,uName);
        }

        private static void setProperty(User user, String uName) throws Exception {
                        PropertyDescriptor pd = new PropertyDescriptor(uName,User.class);
                        Method methodSetUname = pd.getWriteMethod();
                        methodSetUname.invoke(user, uName);
                        System.out.println(user.getName());
        }

}

出现错误如下:
Exception in thread "main" java.beans.IntrospectionException: Method not found: isLisi
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:106)
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:70)
        at techAct5.IntrospectorTest.setProperty(IntrospectorTest.java:32)
        at techAct5.IntrospectorTest.main(IntrospectorTest.java:19)

求指导

3 个回复

倒序浏览
已解决


public static void main(String[] args) throws Exception {
               
                User user = new User("zhangsan");
                String uName = "lisi";
                setProperty(user,uName);
}
中的String uName = "lisi";改为String uName = "name";

然后将  methodSetUname.invoke(user, uName);修改为methodSetUname.invoke(user, "lisi");

麻烦大家了 非常感谢!
回复 使用道具 举报
  1.         public static void main(String[] args) throws Exception {

  2.                 User user = new User();
  3.                 String uName = "lisi";
  4.                 setProperty(user, uName);
  5.         }

  6.         private static void setProperty(User user, String uName) throws Exception {
  7.                 PropertyDescriptor pd = new PropertyDescriptor("name", user.getClass());//你这传参有误,那个String类型的参数是,User的一个属性,你那个是设置name属性的值!!
  8.                 Method methodSetUname = pd.getWriteMethod();
  9.                 methodSetUname.invoke(user, uName);
  10.                 System.out.println(user.getName());
  11.        
  12.         }
复制代码

希望对你有帮助!!
回复 使用道具 举报
田富丰 发表于 2014-5-31 18:58
希望对你有帮助!!

非常谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马