Scala通过字符串类名实例化对象

8
我有一个特征(Action),许多类(${whatever}Action)都继承了它。我想让负责实例化这些Action对象的类具有动态性,即它不知道将要构建哪个扩展对象,直到它被传递一个字符串名称。我希望它接受类名称,然后根据该字符串构建对象。
我在寻找关于这个简单反射问题的简洁/最近答案时遇到了困难。我希望能得到一些建议,无论是寻找信息的地方还是一个高效的方法去做这件事。

你为什么要用反射来实现,而不是使用“匹配”(或类似的方式)呢? - Ryan
1
我需要它具有高度的可扩展性。可能会有数百个这些操作,而那个case语句很快就会变得非常庞大。 - turbo_laser
1个回答

8
您可以按照以下方法使用反射技术:
def actionBuilder(name: String): Action = {
  val action = Class.forName("package." + name + "Action").getDeclaredConstructor().newInstance()
  action.asInstanceOf[Action]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接