获取Class对象的三种方式:
1.通过getObject()
Person p=new Person();
Class c=p.getClass();
2.通过类名.class获取字节码文件对象
Class c=Person.class
3.通过class类中的方法,将类名传给forName方法
Class c=Class.forName("Person")
反射:Constructor
对任意类,都能够知道这个类的所有属性和方法。
对任意对象,都能够调用任意一个方法和属性。
通过反射获取构造方法并使用:
Class c=Class.forName("Person")
1.获取所有公共构造方法:
Constructor[] cons=c.getDeclaredConstructors()
遍历cons: for(Constructor ccc:cons){sysout(ccc)}
2.获取公共有参构造方法
Constructor con1=c.getConstructor(String.class);
Constructor con2=c.getConstructor(String.class,int.class,String.class);
con1.newInstance("aaa")
con2.newInstance("aaa",10)
3.暴力反射,获取私有private构造方法。不提倡
Constructor c=c.getDeclaredConstructor(String.class);
con.setAccessible(true);
//创建对象
Objcet stu=(Person)con.newInstance("aaa");