如何使用scala中的反射调用对象方法(而不是类方法)

时间:2013-04-05 10:29:26

标签: scala reflection

我想在scala中使用反射来调用对象main方法。但它没有用,下面两行代码将通过异常我无法使用反射创建对象。

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

1 个答案:

答案 0 :(得分:2)

首先,你在类名的末尾使用$,因为scala对象总是以$结尾。 然后,您可以在名为MODULE $

的字段中找到对象实例
val class = Class.forName(name)
val objectInstance = class.getField("MODULE$").get(class).asInstanceOf[YOURCLASSTYPE]