类签名中的“()V”是什么意思?

我用Javassist创建了一个没有实际方法的构造函数

CtConstructor c = CtNewConstructor.make ( argTypes, null, newClass );

当我试图拿出这堂课的签名时

c.getSignature();

我懂了

public Echo ()V

我很困惑“ V”是什么意思?我期望任何一个公共Echo(); 或类似的东西

回答:

JVM使用一种紧凑的方式来存储方法签名,其中的构造函数被认为是特例。

例如:

  • () 表示不带参数的方法
  • V 表示它什么也不返回

该计划的其他部分是:

  • B -字节
  • C -字符
  • D -双
  • F -浮动
  • I -整数
  • J - 长
  • S -短
  • V -无效
  • Z -布尔值
  • [ -括号后面的东西数组
  • L[类名] ;-此类的实例,点变为斜线
  • ([args] )[返回类型]-方法签名

例如:

public int foo(String bar, long[][] baz)

会成为

(Ljava / lang / String; [[J] I

请参见Sun ^ H ^ H ^

HOracle网站上的规范

以上是 类签名中的“()V”是什么意思? 的全部内容, 来源链接: utcz.com/qa/398805.html

回到顶部