java.lang.Class のインスタンスを含むサイズ 1 の配列を作成し、その唯一の要素を java.lang.String.class への参照で初期化する方法に関する BCEL コード例を探しています。
つまり、「new Class[]{String.class}」をスタックに置くための BCEL コード サンプルを探しています。
ありがとう。
バージョン 49 (Java 5) 以降のクラス ファイルを作成する場合、必要な命令シーケンスは次のとおりです。
iconst_1
anewarray
java/lang/Class
dup
iconst_0
ldc
java.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);
私はそれをテストしていませんが。