Java反射机制
反射
获取Class对象的方式来操作目标对象的属性
方法、构造器、父类的引用等成员Class对象加载
类名.class
对象名.class
Class.forName(全类名)
ClassLoader.Loader(类名)实例化类对象
类.newInstance
构造器.newInstance内部类的对象加载
public class People{
public class Person{
}
public static void main(String[] args){
Class<Person> class1 = 包名+外部类名+内部类名.class;
Constructor<Person> con = class1.getDeclaredConstructor(People.class);
Object instance = con.newInstance(People.class.newInstance());
}
}
获得本类中的方法
类对象.getDeclaredMethods() 本类中所有的方法包含私有和公有
类对象.getMethods() 本类以及父类中所有的公有方法获得本类中的字段
类对象.getDeclaredFields() 本类中所有的成员属性包含公有和私有
类对象.getFields() 本类以及父类中所有的公有属性获得本类中的构造器
类对象.getDeclaredConstructors() 本类中所有的构造器
- 方法的使用采用invoke调用
- 私有成员属性时必须在使用前调用setAccessible改变为true
- 父类的私有字段可以通过子类的对象来完成修改