先写好ReflectPoint类:
public class ReflectPoint
{
private int x;
private 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;
}
public int getY()
{
return y;
}
public void setY(int y)
{
this.y = y;
}
}
在写好IntroSpectorTest类:
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class IntroSpectorTest
{
public static void main(String[] args)throws Exception
{
ReflectPoint pt1=new ReflectPoint(3,5);
String propertyName = "x";
//PropertyDescriptor描述 JavaBean 通过一对存储器方法导出的一个属性。
//PropertyDescriptor(String propertyName,Class<?> beanClass)
//propertyName - 属性的编程名称。
//beanClass - 目标 bean 的 Class 对象。例如 sun.beans.OurButton.class。
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
//getReadMethod(),获得应该用于读取属性值的方法。
Method methodGetX = pd.getReadMethod();
System.out.println(methodGetX.invoke(pt1));
//getWriteMethod(),获得应该用于写入属性值的方法。
Method methodSetX = pd.getWriteMethod();
methodSetX.invoke(pt1,7);
System.out.println(pt1.getX());
}
}
运行结果如下: