invoke原理_反射与其原理

反射与RRTI反射, 即提供运行时获取类信息, 调用方法等能力, 提供动态化功能; 可用于hook, 动态代理, 依赖注入等技术RRTI(Run-Time Type Identification)运行时类型识别, 作用是运行时识别一个对象的类型和类信息; 1). 传统的”RRTI”,它假定我们在编译期已知道了所有类型; 2). 反射机制,它允许我们在运行时发现和使用类型的信息Class对象的加载g...
摘要由CSDN通过智能技术生成

49f85286f704d77af46d5e4b982449f1.png

反射与RRTI

  • 反射, 即提供运行时获取类信息, 调用方法等能力, 提供动态化功能; 可用于hook, 动态代理, 依赖注入等技术
  • RRTI(Run-Time Type Identification)运行时类型识别, 作用是运行时识别一个对象的类型和类信息; 1). 传统的”RRTI”,它假定我们在编译期已知道了所有类型; 2). 反射机制,它允许我们在运行时发现和使用类型的信息
  • Class对象的加载
  • getClass(), 会触发类的初始化阶段
  • Class#forName(), 会触发类的初始化阶段
  • Class字面常量, 即XXX.class, 简单安全效率高, 但不会触发初始化
  • ClassLoader#loadClass(), 不会触发初始化

反射调用方法原理

  1. 首先Java通过字节码获取类的基本信息,其次通过Class#getMethod("myMethod")经过查找获取Method对象
  2. 接着通过Method#invoke调用方法, 此处包括Native版本和Java版本实现
  3. Native版本的invoke0()在HotSpot VM里是由JVM_InvokeMethod()支持
  4. JVM_InvokeMethod()</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值