Scala 从 String 类名实例化对象
Scala instantiate objects from String classname
我有一个特点,Action,许多不同的 classes,${whatever}Action,扩展。我想使负责实例化这些 Action 对象的 class 动态化,因为它不知道它将构建哪个扩展对象,直到它被传递一个带有名称的字符串。我希望它采用 class 的名称,然后基于该字符串构建对象。
关于这个简单的思考,我找不到 concise/recent 的答案。我希望得到一些建议,无论是寻找的地方,还是巧妙的方法。
您可以按如下方式使用反射:
def actionBuilder(name: String): Action = {
val action = Class.forName("package." + name + "Action").getDeclaredConstructor().newInstance()
action.asInstanceOf[Action]
}
我有一个特点,Action,许多不同的 classes,${whatever}Action,扩展。我想使负责实例化这些 Action 对象的 class 动态化,因为它不知道它将构建哪个扩展对象,直到它被传递一个带有名称的字符串。我希望它采用 class 的名称,然后基于该字符串构建对象。
关于这个简单的思考,我找不到 concise/recent 的答案。我希望得到一些建议,无论是寻找的地方,还是巧妙的方法。
您可以按如下方式使用反射:
def actionBuilder(name: String): Action = {
val action = Class.forName("package." + name + "Action").getDeclaredConstructor().newInstance()
action.asInstanceOf[Action]
}