Перехват вызова метода в 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

0 ответов

Другие вопросы по тегам