質問

こんにちはソフの親愛なるメンバー!

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

public class Cat {
 public int age;
}

public interface Animal {
 public int getAge();
}

この方法の実装は次のとおりです。

public int getAge(){
 return age;
}

親愛なるSOFメンバー、これはどのようにうまくいくでしょうか?

役に立ちましたか?

解決

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

ここで、実際のメソッドを実装するために、コードを含むテストクラスを作成し、結果のクラスファイルでBcelifierを実行して、そのクラスファイルを生成するために必要なJava BCelソースコードを印刷することをお勧めします。それを検査し、あなたの好みに合わせてコピーしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top