【发布时间】:2011-10-04 20:12:20
【问题描述】:
我想将子类中的一些动作映射到他们的超类,但我无法弄清楚。下面的例子...
abstract class A {
abstract def foo()
def aAction1 = {
// do something
render(view: '/someView')
}
def aAction2 = {
SomeObject someObject ->
// do something
render(view: '/someView2')
}
}
class B extents A {
def foo() { return "Hello World" }
# map to parent action
# works fine
def jump = super.&aAction1
# doesnt work ... Why? and can I make it work?
def swim = { SomeObject someObject ->
super.aAction2(someObject)
}
}
关于这个有什么想法吗?谢谢。
【问题讨论】:
-
怎么不工作?顺便说一句,除非您在子类中重新定义 aAction1/2,否则您不需要指定 super。您继承定义。
-
我得到实例化异常。
-
另外,如果我删除游泳并让它落入aAction2,我会得到一个异常
java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) -
所以事实证明它不起作用,因为参数略有不同。它似乎确实按预期工作。