asm操作字节码学习3:asm的主要api

本文介绍了ASM库用于操作Java字节码的Core API和Tree API。Core API采用流式读取,需要了解指令和类型描述符,适合直接修改字节码。Tree API提供类节点和方法节点,方便处理复杂结构,支持数据流和控制流分析,但速度较慢。在特定场景下,如添加注解或分析流,Tree API更为适用。

上一篇说到如何用asm操作一个类.本文将介绍,更多关于类操作的内容.

用asm操作类,因为asm提供了两种api,core与tree,所以需要分别熟悉这两种api.相关的文章也很多,这里作一个总结式的介绍.

1.core api

上文使用的是core api,它的主要类有:

AnnotationVisitor	访问注解
Attribute	java虚拟机中定义的非标准类,属性,方法
ByteVector	动态扩展的向量类型
ClassReader	解析类结构的访问器
ClassVisitor 访问类的访问器
ClassWriter	生成类结构的访问器
ConstantDynamic	运行时常量
FieldVisitor	属性访问器
Handle	属性或方法引用
Label	方法所在的字节码位置
MethodVisitor	方法访问器
ModuleVisitor	java模块访问器
RecordComponentVisitor	访问组件用的
Type 属性或方法的类型
TypePath	类型参数的路径,通配符边界,数组元素类型或静态内部类型
TypeReference	类,方法,属性的类型引用声明
常用的有ClassReader,ClassVisitor,ClassWriter,FieldVisitor,Label,MethodVisitor
这些在上面的例子已经见识过了.

core api的特点是流式读取的.

比如扫描到类文件时,会回调ClassVisitorvisit()方法,扫描到类注解时,会回调ClassVisitorv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值