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


浙公网安备 33010602011771号