【发布时间】:2014-05-04 03:22:01
【问题描述】:
假设我有一个具有许多方法的类的实例,并且我想扩展该对象中的一个方法的行为。在java中,我想我必须创建一个将所有调用重定向到实例的包装器,然后我可以重新定义包装器中的相关方法。但我想知道在 scala 中是否有其他更聪明的方法可以做到这一点?
比如
class A {
def x = 1
def y = 2
def z = 3
}
val a = new A
val a2 = wrap(a) { override def z = 4 } // ???
问候 设计
【问题讨论】:
-
“对象实例的类”是
A。这个事实(关于对象)不能改变,A的定义也不能:a2必须是一个新对象。 -
这里有 Kevin Wright 制作的 autoproxy 插件。也许这会有所帮助?
标签: java scala inheritance