最近在看ASM和invokedynamic动态调用,经常看到method descriptor方法描述符,比如()V这样的东西,那么这个方法描述符到底是个什么鬼
查看官方API文档:
(<parameter-descriptors>)<return-descriptor>
MethodDescriptor 由两个部分组成,小括号内的是参数的数据类型描述,表示有 0 至多个 ParameterDescriptor,最后是返回值类型描述。 void 的描述规则为 "V"。
例如:
void SayHi()
函数的方法描述符 => ()V
。 因为无参,所以括号内为空
void Hello(String str)
的函数的方法描述符 => (Ljava/lang/String;)V
。括号内表示参数为String类型,如果多个参数用分号分隔。
以下是查看ASM源码的相关记录: