将泛型参数作为参数传递

时间:2014-07-01 01:22:58

标签: scala akka

我想做的是(目前无法编译):

def createSystem(system:ActorSystem, actorMap: Map[String, type]) = {
    for( (name, actor) <- actorMap){
      system.actorOf(Props[type], name) //<- should be called like Props[MyActor1]   
    }
  }

然后将其称为:

def standardSystem(system:ActorSystem):Unit = {
    createSystem(
      system,
    Map(
      "actor1" -> classOf[MyActor1],
      "actor2" -> classOf[MyActor2]
    ))
  }

问题是Props [T]期望传入类型,但我不知道如何在地图中传递类型,以及如何在Props调用中引用此类型。

2 个答案:

答案 0 :(得分:1)

定义地图 Map[String , Class[_ <: Actor]]

如上所述,使用Props.create(actor)并迭代它

for ( (name,clazz) <- actorMap ) {
  system.actorOf(Props.create(clazz) , name )
}

答案 1 :(得分:0)

Akka&#39; Props提供了一个create方法,可以上课。只需和你的班级一起打电话:

system.actorOf(Props.create(actor), name)