Student类有一个private构造方法
private Student(String name) {
this.name = name;
}
通过该构造方法暴力反射创建对象
Class<?> c = Class.forName("com.wh.demo11.Student");
Constructor<?> constructor = c.getDeclaredConstructor(String.class);
//暴力反射
constructor.setAccessible(true);
Object obj = constructor.newInstance("柳岩");
System.out.println(obj);
执行结果
不使用暴力反射
Class<?> c = Class.forName("com.wh.demo11.Student");
Constructor<?> constructor = c.getDeclaredConstructor(String.class);
//不使用暴力反射
//constructor.setAccessible(true);
Object obj = constructor.newInstance("柳岩");
System.out.println(obj);
访问权限异常
总结:private修饰的方法是不让外界访问的,在反射中可以通过constructor.setAccessible(true);访问到private构造方法,称为暴力反射
暴力反射破话了访问权限的规则,需要谨慎使用