是否有类型检查在阿卡(斯卡拉)的ActorRef
任何模式?当我传递给其他演员的引用时,我想确保它是正确的类型。然而,得到一个参考时,使用一个演员的context
,它总是返回ActorRef
,所以我真的不能使用子类进行检查。如何在注入依赖时检查Actor/ActorRef的类型?
一个具体的例子如下。在Akka中,我通过将ActorRef
传入另一个Actor
的构造函数来注入依赖关系。请看下面的人为的例子:Speaker
被构造有以Listener
的参考。我在伴侣对象中创建了一个道具构造函数,正如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
型也。有没有一种模式可以解决这个问题?