20

私はこのコードを持っています

Foo foo = new Foo();
foo.callTheMethod();

クラスをサブクラス化または変更せずに、ファクトリを持たずにFoo.callTheMethod()呼び出しを傍受できる方法はありますか?FooFoo

編集:これはAndroidプラットフォーム上にあることを忘れて申し訳ありません。

4

4 に答える 4

29

JavaのProxyクラスを使用します。インターフェイスの動的な実装を作成し、メソッドをインターセプトします。

これがチュートリアルです。

于 2012-09-11T14:42:15.107 に答える
13

アスペクト指向プログラミング、そしておそらくAspectJを検討しましたか? AspectJ/Android の情報については、こちらこちらを参照してください。

于 2012-09-11T14:40:08.040 に答える
4

はい、 AspectJを通じて可能です。いくつかのコード スニペットで説明します。

public Aspect
{
    Object around()call(* Foo.callTheMethod())
    {
        // do your work
        return proceed(); 
    }                       
}
于 2014-05-30T07:15:20.070 に答える
4

Spring AOPを見てください。クラスを手動でサブクラス化する必要はありませんが、Spring はバックグラウンドでそれらを生成し、インターセプトを行うコードを追加します。

于 2012-09-11T14:40:33.860 に答える