参考学习:https://blog.csdn.net/sinat_38259539/article/details/71799078
Demo.java:
package cn.xxx.demo;
import java.lang.reflect.Constructor;
public class Demo {
public static void main(String[] args) throws Exception {
Class c = Class.forName("cn.xxx.demo.Person"); // 反射 获取Class文件对象
Constructor[] cons = c.getConstructors(); // 获取所有公有构造函数
for(Constructor con : cons){
System.out.println(con);
}
Constructor con = c.getConstructor(); // 获取空参构造函数(公共的)
Constructor con2 = c.getConstructor(String.class,int.class); // 根据参数列表,获取指定构造函数(公共的)
Object obj = con.newInstance(); // 通过构造函数的newInstance()实例化对象
Object obj2 = con2.newInstance("张三",20);
System.out.println(obj.toString());
// 创建被反射类的对象实例的快捷方式 (常用)。 前提:必须要有公有的空参构造器 (如果是默认权限,反射的类必须在本包中)
Object obj3 = c.newInstance(); // 通过Class文件对象的newInstance()方法创建对象。 前提:必须要有公有的空参构造器
}
}