gpt4 book ai didi

java - "()V"在类签名中是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 21:04:12 27 4
gpt4 key购买 nike

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

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

当我试图发出这个类的签名时

c.getSignature();

我明白了

public Echo ()V

我很困惑“V”是什么意思?我期望要么 public Echo ();或类似的东西...

最佳答案

JVM 使用一种紧凑的方式来存储方法签名,其中构造函数被视为一种特殊情况。

你的例子:

  • () 表示方法不带参数
  • V 表示不返回任何内容

该方案的其他部分是:

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

例如:

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

会变成

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

spec在 Sun^H^H^HOracle 的网站上

关于java - "()V"在类签名中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9909228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com