导读热词
大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量。今天就举几个小例子说明。
首先看下对基本类型的修改:
/***@authorCool-Coding 2018/5/15*/
public classReflectionUsage {private final int age=18;intgetAge(){returnage;
}}
测试代码:
importjava.lang.reflect.Field;ReflectionTest {static voidmain(String[] args){try{
Class reflectionUsage= Class.forName("practise.practise.ReflectionUsage");
ReflectionUsage o=(ReflectionUsage)reflectionUsage.newInstance();
Field age= reflectionUsage.getDeclaredField("age");
age.setAccessible(true);
age.set(o,68false);
System.out.println(o.getAge());
}catch(ClassNotFoundException e) {
e.printStackTrace();
}(NoSuchFieldException e) {
e.printStackTrace();
}catch (IllegalAccessException |Instantia