こんにちは、クラスに送信されるすべてのメソッド呼び出しを反射的に (または別の方法で) インターセプトする方法があるかどうか疑問に思っていました。Dynamic を使用して未知のメソッドをインターセプトできることは知っていますが、クラスで既に定義されているメソッドはどうですか?
メソッドの構文を変更せずにそれを行う方法を見つけたいと思います(アスペクトフレームワークでメソッドをインターセプトするために行われるため)。
私がやりたいことの例として、これを想像してください:
class A extends AProxy {
def foo =
println("do something")
}
class AProxy extends Dynamic {
def captureKnownMethods = {
//Capture all methods defined in A
}
def applyDynamic(args) = {
//Capture unknown methods
}
}
A myclass = new A
myclass.foo //method call captured by captureKnownMethods
myclass.bar //method call captured by applyDynamic