首页
学习
活动
专区
工具
TVP
发布

光变

专栏成员
46
文章
62117
阅读量
22
订阅数
2.1 ASM-类-结构
本章介绍了使用ASM core的API,生成编译后的class和转换编译后的class。 首先展示了编译后的class文件,然后介绍相应的ASM接口、组件和工具类来生成和转换这些class,并且附带了很多说明性的事例。 方法、注释、和Generics(TODO 需要找一个合理的翻译)会在接下来的章节介绍。
白凡
2018-08-07
5580
1.2 ASM-简介-概览
ASM的作用是生成、转换和分析已经编译的Java类(Java字节码),将其替换成byte数组 (因此转换后的Java类可以被存放在硬盘上或者加载到JVM中)。为了提供一套读取、写入和转换这些byte数组的工具, ASM使用了更高级的概念,比如常量、字符串、Java标识符、Java类型、Java类的结构元素等。 需要注意的是ASM库的范围严格的限制在读取、写入、转换和分析Java类。 特别要注意的是类加载过程是不在该范围内的。
白凡
2018-08-07
2970
3.2 ASM-方法-接口和组件
在ASM API中,用来生成和转变编译后方法的都是基于‘MethodVisitor’抽象类的(参照图表 3.4),这是由‘ClassVisitor’的‘visitMethod’方法返回的。 除了一些注解和调试相关的信息(这些信息将在下一章说明),这个类定义了每个字节码指令类别一个方法,根据这些指令的参数数量和参数类型(这些类别不对应3.1.2节介绍的那些类别)。 这些方法必须按照以下顺序调用(和MethodVisitor接口在Javadoc中指定的一些额外约束):
白凡
2018-08-07
2K0
3.1 ASM-方法-结构
ASM-方法-结构 本章将会介绍如果使用ASM core API生成或者转换Java编译后的method。 本将开始会展示编译后的method,然后使用很多说明示例,展示相应的ASM接口、组件和工具类,生成或者转换编译后的method。
白凡
2018-08-07
1.2K1
2.3 ASM-类-工具类
除了ClassVisitor类,以及相关的ClassReader和ClassWriter等组件, ASM在org.objectweb.asm.util还提供了一些工具类,对开发一个Class生成器和适配器非常有用,但在程序运行中不是必需的。 ASM同样也提供了一个在程序运行时,处理内部名、类型描述符和方法描述符的工具类。 所有工具都会在下面进行介绍。
白凡
2018-08-07
9070
2.2 ASM-类-接口和组件
ASM API对编译类进行生成和编辑,都是基于抽象类ClassVisitor实现的(参照表格 2.4)。 该类中的每一个方法都对应class文件中的同名的结构部分(参考表格-2.1:编译后的class结构)。 简单的结构部分可以通过一个方法进行方法,该方法参数描述了该结构部分,返回void。 其他可能是任意长度和复杂性的结构部分,可以通过调用一个初始化方法,返回一个辅助的visitor类。 这便是visitAnnotation、visitField、和visitMethod的调用模式,这几个方法分别返回AnnotationVisitor、FieldVisitor和MethodVisitor。 同样的原则也适用于递归调用这些辅助类。例如每个方法在抽象类FieldVisitor中都对应了class文件中同名的子结构。
白凡
2018-08-02
1.3K0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档