JAVA-反射

反射允许对封装类的字段(成员变量)成员方法构造方法的信息进行编程访问。

  • 获取修饰符、名字、获取类型、赋值/获取值(创建对象)
  • 获取返回值、抛出的异常、获取注解、运行方法

class字节码文件获取对象。

反射机制

  1. 反射机制允许程序在执行期借助于**reflection API取得任何类的内部信息**(比如成员变量,构造器,成员方法等),并能操作对象的属性及方法。(反射在设计模式和框架底层会用到)
  2. 加载完类之后,**在堆中就产生了一个class类型的对象(一个类只有一个class对象),这个对象包含了类的完整结构信息**,通过这个对象得到类的结构,这个对象就像一面镜子,透过这个镜子看到类的结构,这个对象称为反射。

class类

  1. class也是类,因此集成object对象。
  2. class类是通过类加载器ClassLoader系统创建的。
  3. 对于某个类的class类对象,在内存中只有一份,因为类值加载一次。
  4. 每个类的实例都会记得自己是由那个class实例锁生成。
  5. 通过class可以完整的得到一个类的完整结构。
  6. class对象是存放在堆的。
  7. 类的字节码二进制数据,是放在方法区的,有的地方称为类的元数据。

反射方法

获取class对象的三种方法

  1. Class.forName("全类名")  源代码阶段 (最为常用)
  2. 类名.class  加载阶段  (作为参数传递)
  3. 对象.getClass()  运行阶段  (当已经有了这个类的对象时,才可以使用)

反射获取构造方法

getConstructors:返回所有公共构造方法对象的数组

getDeclaredConstructors:返回所有构造方法对象的数组

getConstructor:返回单个公共构造方法对象的数组

getDeclaredConstructor:返回单个构造方法对象的数组

反射获取成员变量

getFields,getDeclaredFields、getField,getDeclaredField:同上

反射应用-动态代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值