1

我想在 scala 中使用反射调用对象主方法。但它不起作用,以下两行代码将通过我无法使用反射创建对象的异常。

val clazz = Class.forName(job.runnerClass)
val runnerClass = clazz.newInstance()
4

1 回答 1

2

首先,您必须在类名的末尾使用 $,因为 scala 对象总是以 $ 结尾。然后,您可以在名为 MODULE$ 的字段中找到对象实例

val class = Class.forName(name)
val objectInstance = class.getField("MODULE$").get(class).asInstanceOf[YOURCLASSTYPE]
于 2013-04-05T11:12:53.973 回答