2013-04-05 99 views
1

我想在scala中使用反射调用对象主方法。但它不起作用,下面的两行代码将通过例外我无法使用反射创建对象。如何在scala中使用反射调用对象方法(不是类方法)

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

在这里得到了解决对象实例http://stackoverflow.com/questions/3039822/how-do-i-call-a-scala-object- method-using-reflection?rq = 1 – zjffdu 2013-04-05 10:34:29

+0

随意删除自己的问题,如果它是另一个的重复。这可以节省审稿人的工作,以确定它是否重复并关闭它。 – 2013-06-11 20:21:25

回答

2

首先,您在类名的末尾使用了$,因为scala对象总是以$结尾。 然后,您可以找到一个名为领域MODULE $

val class = Class.forName(name) 
val objectInstance = class.getField("MODULE$").get(class).asInstanceOf[YOURCLASSTYPE]