I가이 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))
//...
}
이 컴파일러는 오류를 제공을 "클래스 형식을 필요하지만 T 발견 ".
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)
//...
}
을하지만 내가 얻을 : 나는 문제가 하나는 생성자 매개 변수없이 childActor를 정의 할 수 있다는 것입니다지지 않는다 "T에 대한 매니페스트 가능". 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? 고마워요
"no manifest available for T"부분에 대해서는이 스레드가 도움이 될 수 있습니다. http://stackoverflow.com/questions/7294761/why-is-the-manifest-not-available-in-the-constructor –