Type descriptor
Kiểu trong Java | Type descriptor |
---|---|
boolean |
Z |
char |
C |
byte |
B |
short |
S |
int |
I |
float |
F |
long |
J |
double |
D |
Object |
Ljava/lang/Object; |
int[] |
[I |
Object[][] |
[[Ljava/lang/Object; |
Method descriptor
Method ví dụ | Method descriptor tương ứng |
---|---|
void m(int i, float f) |
(IF)V |
int m(Object o) |
(Ljava/lang/Object;)I |
int[] m(int i, String s) |
(ILjava/lang/String;)[I |
Object m(int[] i) |
([I)Ljava/lang/Object; |
Object m(String str) |
(Ljava/lang/String;)Ljava/lang/Object; |
public Test(){…} |
Method descriptor là ()V , tên method là: <init> ( điều này tượng trưng cho việc đây là constructor) |
static int m = 1; |
Tên method là: <clinit> |
ClassReader
ClassReader
là trình phân tích cú pháp (parser), nó tạo ra một ClassVisitor
để truy cập cấu trúc ClassFile
, ClassFile
được định nghĩa trong Java Virtual Machine Specification - JVMS.
Xem thêm JVMS: https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html
ClassReader
sẽ parse nội dung ClassFile
và gọi các method truy cập thích hợp của một ClassVisitor
nhất định cho từng field, method và bytecode mà nó gặp phải.
ClassVisitor
ClassVisitor
là một trình truy cập (visitor) sẽ truy cập qua các class Java. Các method của class này phải được gọi theo thứ tự sau: visit [ visitSource ] [ visitModule ][ visitNestHost ][ visitOuterClass ] ( visitAnnotation | visitTypeAnnotation | visitAttribute )* ( visitNestMember | [ * visitPermittedSubclass ] | visitInnerClass | visitRecordComponent | visitField | visitMethod )* visitEnd
.