0

java.lang.Class のインスタンスを含むサイズ 1 の配列を作成し、その唯一の要素を java.lang.String.class への参照で初期化する方法に関する BCEL コード例を探しています。

つまり、「new Class[]{String.class}」をスタックに置くための BCEL コード サンプルを探しています。

ありがとう。

4

1 に答える 1

1

バージョン 49 (Java 5) 以降のクラス ファイルを作成する場合、必要な命令シーケンスは次のとおりです。

iconst_1
anewarrayjava/lang/Class
dup
iconst_0
ldcjava.lang.String.class
aastore

残っている唯一の問題は、BCELでそれを生成する方法です。私がそのウェブサイトから見たものによると、ジェネレーターコードは次のようになります。

il.append(InstructionConstants.ICONST_1);
il.append(factory.createNewArray(Type.getType(Class.class), 1));
il.append(InstructionConstants.DUP);
il.append(InstructionConstants.ICONST_0);
il.append(new LDC(constantPoolGen.addClass(Type.getType(String.class))));
il.append(InstructionConstants.AASTORE);

私はそれをテストしていませんが。

于 2014-10-17T15:44:26.957 に答える