asm包中主要有以下這些類
其中,
AnnotationVisitor類:是一個抽象類,定義在解析注解時會觸發的事件,如解析到一個基本值類型的注解、enum值類型的注解、Array值類型的注解、注解值類型的注解等。
AnnotationWriter類:繼承了 AnnotationVisitor 類,用於拼接注解相關字節碼。
Attribute類:字節碼中屬性的類抽象。
ByteVector類:字節碼二進制存儲的容器。
ClassReader類:字節碼的讀取與分析引擎。它采用類似SAX的事件讀取機制,每當有事件發生時,調用注冊的ClassVisitor、AnnotationVisitor、FieldVisitor、MethodVisitor做相應的處理。
ClassVisitor接口:定義在讀取Class字節碼時會觸發的事件,如類頭解析完成、注解解析、字段解析、方法解析等。
ClassWriter類:它實現了ClassVisitor接口,用於拼接字節碼。
Context類:定義了一些字節碼及其屬性。
CurrentFrame類:繼承自 Frame 類
轉載 :https://www.cnblogs.com/davidwang456/p/5652181.html
ASM的核心
在ASM的核心實現中,它主要有以下幾個類、接口(在org.objectweb.asm包中):
ClassReader類:字節碼的讀取與分析引擎。它采用類似SAX的事件讀取機制,每當有事件發生時,調用注冊的ClassVisitor、AnnotationVisitor、FieldVisitor、MethodVisitor做相應的處理。
ClassVisitor接口:定義在讀取Class字節碼時會觸發的事件,如類頭解析完成、注解解析、字段解析、方法解析等。
A visitor to visit a Java class. The methods of this class must be called in the following order: <tt>visit</tt> [ <tt>visitSource</tt> ] [ <tt>visitOuterClass</tt> ] ( <tt>visitAnnotation</tt> | <tt>visitTypeAnnotation</tt> | <tt>visitAttribute</tt> )* ( <tt>visitInnerClass</tt> | <tt>visitField</tt> | <tt>visitMethod</tt> )* <tt>visitEnd</tt>.
AnnotationVisitor接口:定義在解析注解時會觸發的事件,如解析到一個基本值類型的注解、enum值類型的注解、Array值類型的注解、注解值類型的注解等。
A visitor to visit a Java annotation. The methods of this class must be called in the following order: ( <tt>visit</tt> | <tt>visitEnum</tt> | <tt>visitAnnotation</tt> | <tt>visitArray</tt> )* <tt>visitEnd</tt>.
FieldVisitor接口:定義在解析字段時觸發的事件,如解析到字段上的注解、解析到字段相關的屬性等。
MethodVisitor接口:定義在解析方法時觸發的事件,如方法上的注解、屬性、代碼等。
ClassWriter類:它實現了ClassVisitor接口,用於拼接字節碼。
A {@link ClassVisitor} that generates classes in bytecode form. More precisely this visitor generates a byte array conforming to the Java class file format. It can be used alone, to generate a Java class "from scratch",or with one or more {@link ClassReader ClassReader} and adapter class visitor to generate a modified class from one or more existing Java classes.
AnnotationWriter類:它實現了AnnotationVisitor接口,用於拼接注解相關字節碼。
FieldWriter類:它實現了FieldVisitor接口,用於拼接字段相關字節碼。
MethodWriter類:它實現了MethodVisitor接口,用於拼接方法相關字節碼。
SignatureReader類:對類定義、字段定義、方法定義、本地變量定義的簽名的解析。Signature因范型引入,用於存儲范型定義時的元數據(因為這些元數據在運行時會被擦除)。
SignatureVisitor接口:定義在解析Signature時會觸發的事件,如正常的Type參數、類或接口的邊界等。
SignatureWriter類:它實現了SignatureVisitor接口,用於拼接范型相關字節碼。
Attribute類:字節碼中屬性的類抽象。
ByteVector類:字節碼二進制存儲的容器。
Opcodes接口:字節碼指令的一些常量定義。
Type類:類型相關的常量定義以及一些基於其上的操作。