jvm java 方法描述符的解析

()V
(D)Ljava/lang/Double;
(Ljava/lang/Object;)V
(ILjava/lang/String;DFZ)V
(D)Ljava/lang/Double;
(D)Ljava/lang/Double;
(I)Ljava/lang/Integer;
()J

 

在解析class文件中的方法时,会解析出上面的字符串,每一行代表描述一个方法的入参类型,数量和返回值

基本规则

(这里的是方法的参数)这里的是方法的返回值

栗子:

int test(int a)

解析出来是

(I)I

 

int test(int a,double x)

解析出来是

(ID)I

 

上面的栗子用的是基本的数据类型,如果是类-类型(引用类型)就是这样

栗子

int test(int a,String s)

解析出来是

(Ijava/lang/String;)I

是不是超简单啊?来吧 贡献代码吧。。。

https://github.com/anons-org/nada

 

数据类型在JVM中的定义

 

B byte
C char
D double
F float
I int
J long
S short
Z boolean
V void
L 对象类型,如Ljava/lang/Object

 

对于数组类型,每一个维度都是使用一个前置的"["字符来描述,如 [Ljava/lang/String , 或者 [[I

 

posted @ 2021-08-03 16:49  方东信  阅读(686)  评论(0编辑  收藏  举报