首先你要把你的ReflectionPoint的构造方法设置能公有的,
然后按照这样就可以给字段赋值
public static void main(String[] s) throws Exception {
/*
* 获取公有的成员字段,并获取指定对象该字段的值
*/
Class ClassPoint=ReflectionPoint.class ;
ReflectionPoint rp= (ReflectionPoint)ClassPoint.getConstructor(int.class,int.class).newInstance(1,2);
Field fy=ClassPoint.getField("y");//获取公有的字段(属性)
fy.set(rp, 10);//为指定对象的字段设置值
System.out.println(fy.get(rp));//通过获得的字段,来获得已有对象中该字段的值
/*
* 获得私有成员字段,并获取指定对象该字段的值
*/
Field fx=ClassPoint.getDeclaredField("x");//可以获得私有的字段
fx.setAccessible(true);//设置可操作
fx.set(rp, 20);//为指定对象的字段设置值
System.out.println(fx.get(rp));
}
结果是:
10
20
如果你在你的ReflectionPoint类有空参数的构造方法:那么就可以直接用:
Class ClassPoint=ReflectionPoint.class ;
ReflectionPoint rp= (ReflectionPoint)ClassPointnewInstance();
下面的求字段和赋值,就和上面的一样了
如果你不更更改构造方法为公有的话,那么你就利用单例模式,设置一个方法,返回一个构造函数的对象,然后我们利用方法的反射,来获取实例对象,然后操作就和上面的一样了。
希望对你有帮助!
|