反射

 一、获取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()去创建对象    】

 

posted @ 2022-05-01 13:35  陈浩威  阅读(34)  评论(0)    收藏  举报