Scala Reflection Error: Dies ist ein inneres Modul. Verwenden Sie reflectModule auf einem InstanceMirror, um dessen ModuleMirror abzurufen
Folgend aufdiese FrageIch versuche herauszufinden, wie man eine Methode für ein Objekt aufruft. Die relevanten Definitionen sind:
trait ThirdParty { def invoke = println("right") }
trait WeatherIcon { def invoke = println("wrong") }
class MyClass {
object objA extends ThirdParty
object objB extends WeatherIcon
}
Ich bekam einSymbol
zumobjA
so was:
import reflect.runtime.universe._
val stuff = typeOf[MyClass].members.filter(_.isValue).filter(_.typeSignature <:< typeOf[ThirdParty])
Das gibt ein zurückIterable
mit einem einzigen Element, sagen wir also:
val objASymbol = stuff.head.asModuleSymbol
Ich habe dann versucht, basierend aufdiese andere Frage, diese:
val mirror = runtimeMirror(getClass.getClassLoader)
mirror.reflectModule(objASymbol)
Was zu der Fehlermeldung führte, die zu dem Betreff zitiert wurde:
java.lang.Error: this is an inner module, use reflectModule on an InstanceMirror to obtain its ModuleMirror
at scala.reflect.runtime.JavaMirrors$JavaMirror.reflectModule(JavaMirrors.scala:118)
at scala.reflect.runtime.JavaMirrors$JavaMirror.reflectModule(JavaMirrors.scala:60)
Das Problem ist, dass ich nicht herausfinden kann, was diese Fehlermeldung von mir verlangt!