2013-09-12 3 views
1

У меня есть иерархия классов, как это:Akka жалуется на общий параметр

abstract class Class1[T <: Class2 : ClassTag] extends Actor { 

    protected val val1 = context.actorOf(Props[T]) // ops! 
    //.......... 
} 

abstract class Class2[T <: Actor] extends Actor { 
//................ 
} 

Однако, сетует type arguments [T] do not conform to method apply's type parameter bounds [T <: akka.actor.Actor]

Как это исправить?

+1

Акка Акка не напечатана. Этот [SO post] (http://stackoverflow.com/questions/5547947/why-are-messages-to-akka-actors-untyped) объясняет, почему. Вместо этого вы можете использовать [TypedActors] (http://doc.akka.io/docs/akka/2.2.1/scala/typed-actors.html). –

+0

Действительно ли 'Class2' действительно должен иметь общий тип, который также является« актером »? Он собирается использовать этот тип внутри для чего-то? – cmbaxter

ответ

2

Ошибка в том, что вы не передаете параметр типа с Class2. Дайте параметр типа и он работает:

abstract class Class1[T <: Class2[_] : ClassTag] extends Actor { 
    protected val val1 = context.actorOf(Props[T]) 
} 
+0

'Class2' - это актер. –

+0

@MariusKavansky Упс. К сожалению, я не видел декларацию Class2 в коде. Я отредактировал его. – Jatin

Смежные вопросы