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方法获取,为什么还要绕这个弯了?
我可以理解为不需要创建这个类的对象通过反射获得你想获得的此类的一个成员变量的值的吗?还有别的好处吗?
|