是否有類型檢查在阿卡(斯卡拉)的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
型也。有沒有一種模式可以解決這個問題?