是否有可能将某些类方法隐式转发给封装对象?
case class Entity(id: Int, name: String,) {
private lazy val lastScan = new LastScan
def getLastScanDate = lastScan.getLastScanDate
def updateLastScanDate = lastScan.updateLastScanDate
}
我想避免创建def updateLastScanDate = lastScan.updateLastScanDate
只是为了将方法转发给包装对象。
答案 0 :(得分:1)
用简单的语言来说这是不可能的。曾经有一个Kevin Wright的编译器插件来实现这种自动委派。
他似乎正在开发基于宏的Autorproxy "Rebooted"版本,直接将其包含在您的项目中。我在这里粘贴了一个测试来源的例子:
trait Bippy {
def bippy(i : Int): String
}
object SimpleBippy extends Bippy {
def bippy(i: Int) = i.toString
}
@delegating class RawParamWrapper(@proxy pivot: Bippy)
val wrapper = new RawParamWrapper(SimpleBippy)
assert(wrapper.bippy(42) == "42")