setAccessible()方法:
setAccessible 是启用和禁用访问安全检查的开关。值为 true 则指示反射的对象在使用 时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查;默认值为 false
由于 JDK 的安全检查耗时较多.所以通过 setAccessible(true)的方式关闭安全检查就可以 达到提升反射速度的目的。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test3 {
public static void main(String[] args) throws Exception {
Users users = new Users();
Class clazz = users.getClass();
Field field = clazz.getDeclaredField("heigh");
//忽略安全检查
field.setAccessible(true);
field.set(users,176);
Object obj = field.get(users);
System.out.println(obj);
System.out.println("_______________________");
Method method = clazz.getDeclaredMethod("setHeigh", int.class);
method.setAccessible(true);
method.invoke(users);
}
}