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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢威 中级黑马   /  2013-7-3 12:28  /  970 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢威 于 2013-7-3 16:57 编辑

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

public class SetProperty{

        public static void setProperty(Object obj, String propertyName, Object value) throws Exception{
                PropertyDescriptor pd = new PropertyDescriptor(propertyName,Object.class);
                Method methodSetX = pd.getWriteMethod();
                methodSetX.invoke(obj, value);
        }
        
        public static void main(String[] args)throws Exception {
                ReflectPoint rf = new ReflectPoint(3,5);//ReflectPoint类见下边
                setProperty(rf,"x",7);
                System.out.println(rf.getX());
        }
}

public class ReflectPoint {
        private int x;
        public int y;
        
        public ReflectPoint(int x, int y) {//构造方法
                super();
                this.x = x;
                this.y = y;
        }
        
        public int getX() {
                return x;
        }
        public void setX(int x) {
                this.x = x;
        }
}

运行之后提示:
Exception in thread "main" java.beans.IntrospectionException: Method not found: isX
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:89)
        at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:53)
        at practice.five.SetProperty.setProperty(SetProperty.java:10)
        at practice.five.SetProperty.main(SetProperty.java:20)
求高手告诉我哪错了,谢谢!

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1 出了错误后建议,多改改,多运行几遍,.

查看全部评分

3 个回复

倒序浏览
一个class文件中最好只有一个类,如果有多个类 只能有一个是public的修饰 。
  public ReflectPoint(int x, int y) {//构造方法
                 super();//这里调用父类的构造,是Object类的  无法给成员初始化 你注释一下 试试看
                 this.x = x;
                 this.y = y;
         }
回复 使用道具 举报
大哥,你一个文件一堆的public class...
回复 使用道具 举报
把     PropertyDescriptor pd = new PropertyDescriptor(propertyName,Object.class);改为 PropertyDescriptor pd = new PropertyDescriptor(propertyName,obj.getClass());Object.class,obj.getClass()

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

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