JAVA 反射知识总结
1. 获取特定类(Person)的 class 实例
方法一:Class class1 = Person.class;
方法二:Class class1 = Class.forName("com.neusoft.reflect.Person");
方法三:Person p = new Person(); Class class1 = p.getClass();
2. 获取特定类(Person)的构造方法
获取公共无参数构造函数:
Class class1 = Class.forName("com.neusoft.reflect.Person");
Constructor c = class1.getConstructor(null);
//传入null,则说明调用的是public类型的无参数构造函数
Person p = (Person) c.newInstance();
// 实例化构造函数
获取公共有参数构造函数:
Class class1 = Class.forName("com.neusoft.reflect.Person");
Constructor c = class1.getConstructor(String.class);
//传入String类型参数,调用的是public类型的有参数构造函数
Person p = (Person) c.newInstance(“canshu”);
//实例化参数类型为 String 的构造函数
获取私有的有参数构造函数:
Class class1 = Class.forName("com.neusoft.reflect.Person");
Constructor c = class1.getDeclaredConstructor(List.class);
//调用getDeclaredConstructor传入List类型值,则说明调用的是private类型有参数构造函数
c.setAccessible(true);
//私有方法是不能在类的外部被访问,但是setAccessible设置true,则可以在外部访问私有方法
Person p = (Person) c.newInstance(new ArrayList());