С учетом следующего кода:
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)
Теперь Google наконец-то выплюнул эту ссылку, однако я не понимаю, как это "работает как задумано".
Кто-нибудь может пролить свет на эту проблему?
Спасибо!
Редактировать
Если я изменю свой код следующим образом, я, очевидно, не получу ошибку. Однако это, конечно, не решение, а скорее временное решение.
trait B extends A {
override def something()
}