public class bbb { //设定一个JavaBean private int x ;
public bbb(int x)
{
this.x=x ;
}
public int getX()
{
return x ;
}
public void setX(int x)
{
this.x=x ;
}
}
import java.io.File;
import java.lang.reflect.*;
import java.beans.PropertyDescriptor;
public class Test {
public static void main(String[] args) throws Exception
{
bbb t=new bbb(3) ; //创建一个JavaBean对象
String propertyName="x"; //我们对x属性进行内省操作,定义个String类 保存属性名字
PropertyDescriptor pt1=new PropertyDescriptor(propertyName,bbb.class) ; //创建一个 属性描述符类 PropertyDescriptor类 参数是 属性名字和 JavaBean类的字节码 Method m1=pt1.getReadMethod() ; //获得设置方法的映射类其实跟反射差不多,通过属性描述符返回 Method对象 ,这个对象是 getX()方法的映射对象 Object obj=m1.invoke(t); //调用t对象的getX方法,并返回结果 ,结果自动装箱 System.out.println(obj); //打印结果
PropertyDescriptor pt2=new PropertyDescriptor(propertyName,bbb.class); //创建属性描述类 Method m2=pt2.getWriteMethod() ;//获得设置方法 对应的映射对象
m2.invoke(t, 7); //执行 t对象的setX方法
System.out.println(t.getX()); //打印结果 }
}
结果为3,7 |