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