动态创建/获取类的类型



我需要根据命令行参数创建一个actor:

def main(args: Array[String]): Unit = {
  val t = args(0) match {
    // 1
    case 1 => // MyActor1 
    case 2 => // MyActor2
    case 3 => // MyActor3
  }
  // 2
  val app = system actorOf (Props[/* ??? MyActor1(2,3).type? - not working*/], "app")
  app ! "Start"
}
abstract class MyActorBase extends Actor {...}
class MyActor1 extends MyActorBase {...}
class MyActor2 extends MyActorBase {...}
class MyActor3 extends MyActorBase {...}

所以我有两个问题:match应该返回什么,我应该传递给Props什么?

在C#中,我会使用typeof运算符,但是,以下代码在Scala MyActor1.type 中不起作用

只是一个合适的关键词问题(这里我假设您使用的是最新版本的Props-api):

val actorClass = args(0) match {
   case 1 => classOf[MyActor1]
   case 2 => classOf[MyActor2]
}
val app = system actorOf (Props(actorClass), "app")

最新更新