考慮下面的代碼抽象成員:阿卡TypedActor與特質原因java.lang.AbstractMethodError
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 –