0

SOFの皆さん、こんにちは!

私が探しているものは? 私はWebを検索して検索してきましたが、クラス(もちろんコンパイル済み)にインターフェイスを実装/注入し、クラスのインターフェイスによって必要なメソッドを追加するにはどうすればよいですか?私もできる限りBCELとASMを学ぼうとしていますが、リソースが不足しているので(親愛なる友人のGoogleでも)、ここで助けが得られることを願っています。私はあなたが私や何かをスプーンで与えることを期待していませんが、私はいくつかの指示が必要です!:) ASMサイトにそのすばらしい本があり、それらに関するすべてのチュートリアルがたくさんあることは知っていますが、前に述べたように、どうすればそのインターフェイス/メソッドを追加できるのか理解できません。 私は何を試しましたか?私はここ でこのリンクを見つけましたしかし、それは私が期待したようにうまくいきませんでした..私は自分が何をしたいのかを正確に知っていますが、どうすればそれを達成できるのかわかりません..ここに例があります!

public class Cat {
 public int age;
}

public interface Animal {
 public int getAge();
}

そのメソッドの実装は次のとおりです。

public int getAge(){
 return age;
}

親愛なるSOFメンバー、これはどのように機能しますか?

4

1 に答える 1

0

私はBCELの経験があります。必要なのは、再定義するクラスを検出するカスタムクラスローダーから始めることです。そのようなクラスごとに、BCEL JavaClassオブジェクトを取得し(fe ClassLoaderRepositoryを使用)、そのクラスを好みに合わせて変更します。完了したら、JavaClassからクラスファイルを取得し、ClassLoader#defineClassを使用して定義のためにJVMに渡します。

ここで、実際のメソッドを実装するには、コードを含むテストクラスを作成し、結果のクラスファイルに対してBCELifierを実行することをお勧めします。これにより、そのクラスファイルの生成に必要なJavaBCELソースコードが出力されます。それを調べて、好みに合わせてコピーして貼り付けます。

于 2011-12-07T14:29:12.630 に答える