反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。反射的 api 在 java.lang.reflect
。
操作原理
在运行的时候通过对象去得到它的字节码,用于操作对象。
获得类对象的三种方法
一、类名.class
二、对象.getclass()
使用这种必须确保对象有空构造器。
三、class.forName(“包名.类名”)
暴力访问
使 private 属性的构造器、方法、field 能够被访问。
Constructor<Users> us = clazz.getDeclaredConstructor(String.class);
//设置暴力访问
boolean access = us.isAccessible();
us.setAccessible(true);
Users uu = us.newInstance("hello");
us.setAccessible(access);