一、介绍
除了 ClassVisitor
类和相关的 ClassReader
、 ClassWriter
组件之外, ASM 还在
org.objectweb.asm.util
包中提供了几个工具,这些工具在开发类生成器或适配器时可能
非常有用,但在运行时不需要它们。 ASM 还提供了一个实用类,用于在运行时处理内部名、类型描述符和方法描述符。所有这些工具都将在下面介绍。
二、Type
2.1 Type 对象
如您在前几篇博客中所见,ASM API公开了Java类型,因为它们存储在已编译的类中,即作为内部名称或类型描述符。也可以将它们公开显示在源代码中,以使代码更具可读性。
但这需要在ClassReader
和ClassWriter
中的两种表示形式之间进行系统的转换,这会降低性能。
这就是为什么ASM不会将内部名称和类型描述符透明转换为等效的源代码形式的原因。但是,它提供了Type
类,以便在必要时手动执行此操作。
Type
对象表示Java类型,可以从类型描述符或从Class
对象构造。 Type
类还包含表示原始类型的静态变量。例如,Type.INT_TYPE
是表示int
类型的Type
对象。
2.2 getInternalName方法
getInternalName
方法返回