如class A { private int value = 20; } class B { private a : A = A();}
现在想通过B反射出A,且修改value的值。
如class A { private int value = 20; } class B { private a : A = A();}
现在想通过B反射出A,且修改value的值。
class A
{
private int value = 20;
public void printA()
{
System.out.println("A====="+getValue());
}
public int getValue()
{
return value;
}
public void setValue(int value)
{
this.value = value;
}
}
class B
{
public static void main(String[] args)
{
Class a1 = null;
try
{
//通过Class类的一个forName(String className)静态方法返回一个Class对象,className必须是全路径名称;
//我这里A和B类都放在默认的包下,所以不用填路径,一般要填类似 com.**.A 这样的
a1 = Class.forName("A");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
//newInstance()方法 ---> 获取class类型之后,可以创建该类型的对象
A myA = (A) a1.newInstance();
//修改A中的a属性,其实是修改实例对象myA的a属性
myA.setValue(30);
//将a打印出来
myA.printA();//A=====30
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
运行B类,可以看到结果 :A=====30