【发布时间】:2014-07-07 22:41:34
【问题描述】:
我有以下代码,其中T 是一个演员子类,它也应该接受一个构造函数参数:
abstract class AbstractActor(dest: ActorRef) extends Actor {
//...
}
class ChildActor(dest: ActorRef) extends AbstractActor(dest) {
//...
}
class ParentActor[T <: AbstractActor : ClassTag] extends Actor {
val childRef = context.actorOf(Props(classOf[T], destActorRef))
//...
}
编译器给出错误:“class type required but T found”。我认为问题是也可以在没有构造函数参数的情况下定义 childActor:
class ChildActor extends AbstractActor(dest) {
//...
}
所以,我尝试了:
class ParentActor[T <: AbstractActor : ClassTag] extends Actor {
def createT(dest: ActorRef)(implicit ev: Manifest[T]): ActorRef =
context.actorOf(Props(ev.runtimeClass, dest))
val childRef = createT(destActorRef)
//...
}
然后我得到:“没有可用于 T 的清单”。关于我做错了什么的任何想法?谢谢
【问题讨论】:
-
对于“没有可用于 T 的清单”部分,此线程可能会有所帮助:stackoverflow.com/questions/7294761/…
标签: scala akka scala-2.10