I have a class
class LrGen extends IModelGen {
var header = Array(
"First name",
"last name",
"address",
"city",
"state",
"zip"
)
override def getHeader(separator:String): String =
{
header.mkString(separator)
}
}
I am trying to invoke the getHeader method of that class using reflection following: How to invoke method on companion object via reflection? but modified slightly as my class name will vary as well. My code looks like:
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"))
However, I am getting error:
error: ru.MethodSymbol does not take parameters
[ERROR] println(methodGetHeader("\t")
Any insight? Thanks in advance.
For reference My interface looks like :
trait IModelGen
{
def getHeader(separator:String): String
}