在Akka中,除了使用使用RPC样式编程模型的"Typed Actor"API之外,有没有办法将actor限制为特定的静态类型?
我可以在Akka中使用消息传递样式而不会在actor边界处丢弃静态类型安全吗?
例如,我想使用这样的代码:
sealed abstract class FooMessage
case object Foo extends FooMessage
case object Bar extends FooMessage
class FooActor extends Actor[FooMessage] {
def receive = {
case Foo => () // OK
// Would raise a compiler error:
// case s: String => error("Can't happen, String is not a subtype of FooMessage")
}
}
val fooActor = actorOf[FooActor]
fooActor ! Foo // OK
// Won't compile:
fooActor ! "Hello"
Run Code Online (Sandbox Code Playgroud)
也许人们必须扩展一些基本特征或者具有Either允许系统级消息(Exit等等)的构造.