Scala实例化String classname

时间:2015-09-03 19:55:12

标签: scala reflection scala-2.11

我有一个特征,Action,许多不同的类,$ {whatever} Action,扩展。我想让负责实例化这些Action对象的类动态,因为在传递带有名称的String之前,它不知道它将构建哪个扩展对象。我希望它取类的名称,然后根据该String构建对象。

我无法找到有关这一简单反思的简明/最近答案。我希望得到一些关于要看的地方或者做这件事的光滑方式的建议。

1 个答案:

答案 0 :(得分:5)

您可以按如下方式使用反射:

def actionBuilder(name: String): Action = {
  val action = Class.forName("package." + name + "Action").newInstance()
  action.asInstanceOf[Action]
}