10

ByteBuddy を使用して、動的に生成されたバイト コードを使用して実行時にクラスを作成しています。生成されたクラスは意図したとおりに動作しますが、生成されたバイト コードを手動で調べて、それが正しいことを確認したいと考えています。

例えば

Class<?> dynamicType = new ByteBuddy()
        .subclass(MyAbstractClass.class)
        .method(named("mymethod"))
        .intercept(new MyImplementation(args))
        .make()
        .load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
        .getLoaded();

ここで、MyImplementation は複数の StackManipulation コマンドをチェーンして、動的に生成されたコードを作成します。

生成されたクラスをファイルに書き出すことはできますか (IDE で手動で検査できます)、または生成されたクラスのバイトコードを出力することはできますか?

4

2 に答える 2

14

クラスを .class ファイルとして保存できます。

new ByteBuddy()
    .subclass(Object.class)
    .name("Foo")
    .make()
    .saveIn(new File("c:/temp"));

このコードは を作成しますc:/temp/Foo.class

于 2015-06-16T09:18:29.153 に答える