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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁林 金牌黑马   /  2011-10-18 22:04  /  3099 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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)
大家帮我看看是哪里错了?谢谢!

5 个回复

倒序浏览
public class ReflectPoint {
这个地方错了,两个都声明了public的类,不能存放在一个java文件中。你分别存放

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
楼上,那异常是说你的方法isX()没有找到,看看 java.beans.PropertyDescriptor这个类里面有没有这个方法。应该不仅仅是一个public 的问题吧。你看那异常信息的意思

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
郭敏 黑马帝 2011-10-18 23:10:42
板凳
将 PropertyDescriptor pd = new PropertyDescriptor(propertyName,Object.class) 方法中 Object.class 改为 ReflectPoint.class, 在试试!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
郭敏 黑马帝 2011-10-18 23:18:03
报纸
或者将 Object.class 改为 obj.getclass() 在试试!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
两个都声明了public的类,不能存放在一个java文件中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马