Java虚拟机中描述类型和方法有固定的描述符和Java语法中所所用的完全不一样,比如int
应当表示为i
,表示一个java类名,如:java.lang.Object
类在虚拟机中应该使用java/lang/Object
,表示引用对象应当使L类名;
如:Object obj
应当使用Ljava/lang/Object;
表示,表示成员方法时候应当使用(参数类型描述符)返回值,如:void main(String[] args)
应当使用([Ljava/lang/String;)V
表示,表示数组使用[类型描述符
,如int[]
应当使用[i
表示,表示构造方法名称应当使用<init>
表示。
类型描述符表
描述符 | Java类型 | 示例 |
---|---|---|
B |
byte |
B |
C |
char |
C |
D |
double |
D |
F |
float |
F |
I |
int |
I |
J |
long |
J |
S |
short |
S |
Z |
boolean |
Z |
[ |
数组 |
[IJ |
L类名; |
引用类型对象 |
Ljava/lang/Object; |
方法描述符示例**
方法示例 | 描述符 | 描述 |
---|---|---|
static{...} ,static int id = 1; |
方法名:<clinit> |
静态语句块/静态变量初始化 |
public Test (){...} |
方法名:<init> ,描述符()V |
构造方法 |
void hello(){...} |
()V |
V 表示void ,无返回值 |
Object login(String str) {...} |
(Ljava/lang/String;)Ljava/lang/Object; |
普通方法,返回Object类型 |
void login(String str) {...} |
(Ljava/lang/String;)V |
普通方法,无返回值 |