ASM-17-接口与组件
方法
本章介绍如何使用ASM树API生成和转换方法。
它从仅提供树API的介绍开始,并提供一些说明性示例,然后介绍如何与核心API组合。
下一章介绍了用于泛型和注解的树形API。
Interfaces and components 说明
MethodNode
用于生成和转换方法的ASM树API基于MethodNode类(请参见图7.1)。
Figure 7.1.: The...
2018-07-20 05:43:31 |
Java
ASM-16-组件组成
组件组成
到目前为止,我们只看到了如何创建和转换ClassNode对象,但是还没有看到如何从类的字节数组表示形式构造ClassNode,反之亦然,如何从ClassNode构造此字节数组。
实际上,这是通过组合核心API和树API组件来完成的,如本节所述。
介绍
除了图6.1中所示的字段之外,ClassNode类还扩展了ClassVisitor类,并且还提供了一个接受方法,该方法将Cl...
2018-07-20 05:43:31 |
Java
ASM-15-Tree Classes Interface and Components
本章简介
本章介绍如何使用ASM树API生成和转换类。
它从仅介绍tree API入手,然后进行说明如何与核心API组合在一起。
在下一章中将说明用于方法,注解和泛型内容的树形API。
Interfaces and components
Presentation(介绍)
类节点信息
用于生成和转换已编译Java类的ASM树API基于ClassNode类(请参见图6.1)。
...
2018-07-20 05:43:31 |
Java
ASM-14-reflectASM 性能更高的反射框架
reflectasm
reflectasm is a very small Java library that provides high performance reflection by using code generation.
An access class is generated to set/get fields, call methods, or create a ne...
2018-07-20 05:43:31 |
Java
ASM-13-向后兼容守则
守则
本节介绍了使用核心ASM API时必须遵循的准则,以确保您的代码在将来的任何ASM版本中均保持有效(按照上述合同的意义)。
首先,如果您编写类生成器,则没有任何可遵循的准则。
例如,如果您为ASM 4.0编写了一个类生成器,则它可能会包含一个诸如 visitSource(mySource, myDebug) 之类的调用,当然也不会包含对visitLicense的调用。
如果使用...
2018-07-20 05:43:31 |
Java
ASM-12-向后兼容
向后兼容
介绍
过去已经以类文件格式引入了新元素,并且将来将继续添加新元素(例如,用于模块化,Java类型的注释等)。
直到ASM 3.x,每个此类更改都导致ASM API中向后不兼容的更改,这是不好的。
为了解决这些问题,ASM 4.0中引入了一种新的机制。
其目标是确保即使将来在类文件格式中引入了新功能时,所有将来的ASM版本都将保持与任何先前版本(直至ASM 4.0)的向后兼...
2018-07-20 05:43:31 |
Java
ASM-11-Metadata Debug 调试
Debug
使用 javac -g 编译的类包含其源文件的名称,源行号和字节码指令之间的映射以及源代码中的本地变量名称和字节码中的本地变量槽之间的映射。
此可选信息在调试器中以及可用时在异常堆栈跟踪中使用。
结构体
类的源文件名存储在专用的类文件结构部分中(请参见图2.1)。
源行号和字节码指令之间的映射存储为方法的已编译代码部分中(行号,标签)对的列表。
例如,如果l1,l2和...
2018-07-20 05:43:31 |
Java
ASM-10-Metadata Annotation 注解
注解
如果类,字段,方法和方法参数注解(例如@Deprecated或@Override)存储在已编译的类中,则它们的保留策略不是RetentionPolicy.SOURCE。
该信息在运行时不会由字节码指令使用,但是如果保留策略为RetentionPolicy.RUNTIME,则可以通过反射API进行访问。
编译器也可以使用它。
结构
结构体
源代码中的注解可以采用多种形式,例如...
2018-07-20 05:43:31 |
Java