反射


 一、获取Class的实例的方式

 二、了解类的加载器

三、使用ClassLoader加载配置文件

四、通过反射,创建运行时类的对象  【  newInstance()方法   】

五、常用方法

getFilelds():获取当前运行时类及其父类中声明为public访问权限的属性

getDeclaredFields():获取当前运行时类中声明的所有属性不包括父类中声明的属性)

 

getMethods():获取当前运行时类及其父类中声明为public访问权限的方法

getDeclaredMethods():获取当前运行时类的所有方法(不包括父类)

getConstructors():获取当前运行时类声明为public的构造器(不包括父类)

getDeclaredConstructors():获取当前运行时类中的所有构造器(不包括父类)

以上方法 返回数组

获取了类的方法后,我们如何去获取方法中的内部结构呢?(注解、权限修饰符、返回值类型、方法名、参数列表等等)

 六、

1.获取运行时类的父类

2.获取运行时类带泛型的父类

3.获取运行时类带泛型的父类 的泛型 (Class类实现了Type接口)

4.获取运行时类的接口

5. 获取运行时类所在的包

6.获取运行时类声明的注解

七、获取运行时类的指定属性

获取指定属性名的这个属性

1.getField(String fieldName):要求运行时类的属性必须声明为public,通常不采用此方法,要用getDeclaredField(String name)

 2.getDeclaredField(String fieldName):获取指定属性名的属性(通常用这个方法)

八、获取运行时类中的指定方法  

1.获取非静态方法,需要用运行时类的对象去调用。

invoke()也是有返回值的,返回值就是show()的返回值

2.我们如何获取静态方法,此时就不能用运行时类的对象去调用了,而是要用当前运行时类去调用

 

九、获取运行类的指定构造器【   不常用,通常用clazz.newInstance()去创建对象    】