1

我正在使用 Javassist 构建一个运行时类。我正在创建一个 CtMethod:

CtMethod m = CtMethod.make(constructMethodSource, bclass);

在“constructMethodSource”里面是这一行,它是合法的 Java 代码行:

java.lang.Object[] args = new java.lang.Object[] {};

这样,make() 会引发语法错误:

[source error] syntax error near "bject[] {};"

我使用它,而是以不同的方式初始化我的空数组:

java.lang.Object[] args = new java.lang.Object[0];

这让 Javassist 很高兴,但我想知道为什么 Javassist 在第一行就卡住了?这是一个已知的限制或错误还是我在做一些愚蠢的事情?

4

2 回答 2

1

研究过这个,我能想到的最好的答案是,这是一个遗漏的错误。根据文档,它“应该工作”,但事实并非如此。幸运的是,解决方法很简单,只需使用“new Object[0];”初始化您的数组。

于 2013-04-23T18:42:36.847 回答
0

http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tutorial2.html(第 4.7 节)说:数组初始值设定项,由括号 { 和 } 括起来的以逗号分隔的表达式列表,是除非数组维度为一,否则不可用。

于 2013-04-09T13:14:38.577 回答