Java class 描述符分为 Field 描述符和 Method 描述符。
Field(域)
在 Java Language and Virtual Machine Specifications 中将 void 这种类型定义为额外的 VoidDescriptor(V),种子方法描述符的返回值使用,故不属于Field。
有 BaseType、ObjectType、ArrayType 三种类型。
BaseType
BaseType 是 Field 的基本类型,它是下面类型中的一种。
Type | 描述符 |
---|---|
byte | B |
char | C |
double | D |
float | F |
int | I |
long | J |
short | S |
boolean | Z |
例子:
int i 中,i 描述符就为 I
ObjectType
即为引用
Type | 描述符 |
---|---|
reference | L classname |
例子:
Object o,o 描述符就为 Ljava/lang/Object
ArrayType
Type | 描述符 |
---|---|
reference array | [ |
例子:
double[][][] array,o 描述符就为 [[[D
Method(方法)
描述符格式
( {ParameterDescriptor} ) ReturnDescriptor
其中 ParameterDescriptor 指入参,类型为 FieldType。而 ReturnDescriptor 指返回值,类型可能为 FieldType 和 VoidDescriptor(V)
例子:
1 | (IDLjava/lang/Thread;)Ljava/lang/Object; |