class对象,反射

获取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");

posted on 2019-10-29 10:15  流光若影  阅读(120)  评论(0编辑  收藏  举报