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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周玉龙 中级黑马   /  2012-7-20 00:18  /  1654 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class ReflectPoint

{
        private int x;
        private int y;
        ReflectPoint(){}
        ReflectPoint(int x,int y){
        this.x = x;
        this.y = y;
        }
        public void setX(int x){
         this.x = x;
        }
        public int getX(){
                return x;
        }
        public void setY(int y){
         this.y = y;
        }
        public int getY(){
                return y;
        }
}

class Test
{
        public static void main(String[] args)
        {
        ReflectPoint pt1 = new ReflectPoint(3, 5);
        //System.out.println(pt1.getX());// 并不知道取得X的方法是getX()

        //用内省方式得到x的get属性
        String propertyName = "x"; //定义属性名称,此处表示要获取x的值
        PropertyDescriptor pd1 = new PropertyDescriptor(propertyName,pt1.getClass());
        Method methodGetX = pd1.getReadMethod();
        Object retVal = methodGetX.invoke(pt1);
        System.out.println(retVal);
        //System.out.println(BeanUtils.getProperty(pt1, "y"));或者说用BenUtils jar包中的方法获取或者设置某个类中某个属性的值。
        }
}
内省的方法有什么优势了?我完全可以直接用set,get方法获取,为什么还要绕这个弯了?
我可以理解为不需要创建这个类的对象通过反射获得你想获得的此类的一个成员变量的值的吗?还有别的好处吗?





点评

内省的优势,反射的好处,这个问题确实困扰很多人。  发表于 2012-7-20 02:40

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
我看视频的时候,有听到老实说:内省可以把一个普通类当做javaBean来处理。。。。
回复 使用道具 举报
用内省就是要用到反射,用反射就是为了能动态的获取属性值,因为方法里面的属性值一般是私有的,用了内省之后就可以动态的获取这些 设置和获取属性值的方法了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马