【发布时间】:2011-11-20 12:32:49
【问题描述】:
给定以下代码:
import akka.actor._
object TraitTest {
trait A {
def something()
}
trait B extends A
class C extends TypedActor with B {
override def something() {
println("Why am I not implemented?")
}
}
def main(args: Array[String]) {
val service = TypedActor.newInstance(classOf[B], classOf[C])
service.something()
}
}
运行main 时,出现以下异常:
Exception in thread "main" java.lang.AbstractMethodError: TraitTest$B$$ProxiedByAWDelegation$$1322144340710.something()V
at TraitTest$.main(TraitTest.scala:29)
at TraitTest.main(TraitTest.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
现在,谷歌终于吐出了this 链接,但我不明白这是如何“按设计工作”的。
有人能解释一下这个问题吗?
谢谢!
编辑
如果我按如下方式更改我的代码,我显然不会收到错误消息。但是,这当然不是解决方案,而更多的是一种临时解决方法。
trait B extends A {
override def something()
}
【问题讨论】:
-
2.10.2也遇到这个问题
标签: scala akka actor typedactor