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) は次のように述べています。配列の次元が 1 でない限り使用できません。

于 2013-04-09T13:14:38.577 に答える