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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage