【发布时间】:2018-08-16 21:25:45
【问题描述】:
我有课
class LrGen extends IModelGen {
var header = Array(
"First name",
"last name",
"address",
"city",
"state",
"zip"
)
override def getHeader(separator:String): String =
{
header.mkString(separator)
}
}
我正在尝试使用以下反射调用该类的 getHeader 方法:How to invoke method on companion object via reflection? 但稍作修改,因为我的类名也会有所不同。我的代码如下:
val clazzToInvoke = classInitialName+ "Gen"+"$"
import scala.reflect.runtime.universe._
// get runtime universe
val ru = scala.reflect.runtime.universe
// get runtime mirror
val rm = ru.runtimeMirror(this.getClass.getClassLoader)
// get instance mirror for companion object for the class
val moduleSymbol = rm.reflect(Class.forName(clazzToInvoke))
val methodGetHeader = ru.typeOf[clazzToInvoke.type].decl(ru.TermName("getHeader")).asMethod
println(methodGetHeader("\t"))
但是,我收到错误:
error: ru.MethodSymbol does not take parameters
[ERROR] println(methodGetHeader("\t")
有什么见解吗?提前致谢。
供参考我的界面看起来像:
trait IModelGen
{
def getHeader(separator:String): String
}
【问题讨论】:
标签: scala reflection scala-reflect