黑马程序员技术交流社区

标题: 关于内省获得信息..求解答 [打印本页]

作者: 328078121    时间: 2013-9-2 07:36
标题: 关于内省获得信息..求解答
本帖最后由 328078121 于 2013-9-4 08:29 编辑

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()
        //用内省方式得到xget属性
        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包中的方法获取或者设置某个类中某个属性的值。
        }
}
内省的方法有什么优势了?我完全可以直接用setget方法获取,为什么还要绕这个弯了?
我可以理解为不需要创建这个类的对象通过反射获得你想获得的此类的一个成员变量的值的吗?还有别的好处吗?






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2