如果我们想要使用Person类,除了可以用new Person直接对其进行使用外,还可以不通过new直接使用其中所有的内容:
1、从所有构造方法中直接拿到它的构造方法,包括私有
注意:所有的类必须有私有构造
-
第一种:直接调用无参构造
Class<?> clazz = Class.forName("com.doit.reflect.Person");
//直接调用默认构造方法
Person p = (Person)clazz.newInstance();
p.setName("徐睿");
p.setAge(20);
p.setGender(false);
p.setId("1001a");
System.out.println(p);
-
第二种:调用指定个数参数或类型的构造
//对比调用无参与批定参数构造
Constructor<?> c = clazz.getConstructor();
//根据不同的传入参数,传入相应的类型实现调用
Constructor<?> c2 = clazz.getConstructor(String.class, String.class, boolean.class, int.class);
Object o = c.newInstance();
Object lss = c2.n