在Akka(scala)中,有没有检查
下面是一个具体的例子。在Akka中,我通过将
问题在于我可以创建另一个演员,比如说
ActorRef
类型的模式?当我将引用传递给另一个actor时,我想确保它是正确类型的。但是,在获取引用时,使用actor的始终返回ActorRef
,因此我无法真正使用子类化来检查这一点。下面是一个具体的例子。在Akka中,我通过将
ActorRef
传递到另一个Actor
的构造函数中来注入依赖项。请看下面的人为示例:Speaker
构造时使用Listener
引用。我在伙伴对象中创建了一个props构造函数,这是Akka文档所鼓励的。package test
import akka.actor._
object scratchpad {
object Speaker {
def apply(listener : ActorRef) : Props = Props(classOf[Speaker],listener)
}
class Speaker private(listener : ActorRef) extends Actor {
override def preStart() = listener ! "knock knock"
}
class Listener extends Actor {
def receive : Receive = {
case "knock knock" =>
//received message
}
}
val system = ActorSystem("test")
val listener = system.actorOf(Props[Listener])
val speaker = system.actorOf(Speaker(listener))
}
问题在于我可以创建另一个演员,比如说
DeafMute
,并将其传递进去 - 但编译器不会捕捉到这一点,因为它也是ActorRef
类型。有没有一种模式可以解决这个问题?