43、反射
1、概述
框架设计的灵魂
将类的各个组成部分封装为其他对象,这就是反射机制
可以在程序运行过程中操作这些对象
可以解耦,提高程序可拓展性
2、获取Class对象的三种方式
1、源代码阶段
Class.forname(‘全类名’),将字节码文件加载进内存,返回class对象
多用于配置文件
2、类对象阶段
类名.class
多用于参数传递
3、运行时阶段
对象.getClass();
多用于对象的获取字节码
3、class对象的功能
获取的功能
获取成员变量们
getFields(),获取所有public修饰的成员变量
getField(String name)
getDeclareFields(String name),获取所有的成员变量
获取成员方法们
getMethods()
getMethod()
getDeclareMethods()
getDeclareMethod()
获取构造方法们
getConstructors(),获取所有的构造方法
getConstructor(),获取一个
getDeclareConstructors
getDeclareConstructor
获取类名
getName
忽略安全检查的代码
变量名.setAccessible(true)
//暴力反射