类签名中的“()V”是什么意思?
我用Javassist创建了一个构造函数,它没有真正的方法
CtConstructor c = CtNewConstructor.make ( argTypes, null, newClass );
当我试图放出这个类的签名时
c.getSignature();
我得到
public Echo ()V
我很困惑“V”是什么意思?我期望公共Echo();或类似的东西...
我用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[类名] - 此类的实例,点变为斜杠;([参数] [返回类型] - 方法签名)例如:
public int foo(String bar, long[][] baz)
会变成
(Ljava/lang/String;[[J)I
请参阅 Sun^H^H^HOracle 网站上的规范
“V”确定结果类型“void”