这个
例子一共两个java文件:
class="java" name="code">package com.spring;
public class Test {
private String str = "hello";
public String getStr() {
return str;
}
}
package com.spring;
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
//正常情况下Test类里面的str属性值是没法改变的,但是通过反射的强大功能是可以实现的
Test test = new Test();
Class clazz = Test.class;
Field field = clazz.getDeclaredField("str");
//设置为true表示反射会压制java语言的访问检查,也就是java不再检查私有的成员变量,此时反射也可以访问此变量。
//因为str属性是private的,外界是无法访问的,如果不设置此属性运行时会报错。
field.setAccessible(true);
field.set(test, "world");
System.out.println(test.getStr());//激动人心的时刻到了。把str的值改了。
}
}