Перехват вызова метода в Scala
Привет, мне было интересно, есть ли способ рефлексивно (или иным образом) перехватывать все вызовы методов, отправленные в класс. Я знаю, что неизвестные методы могут быть перехвачены с помощью 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