类签名中的“()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”