Błąd odbicia Scala: jest to wewnętrzny moduł, użyj reflectModule na InstanceMirror, aby uzyskać jego ModuleMirror

Kontynuacjato pytanie, Próbuję dowiedzieć się, jak wywołać metodę na obiekcie. Odpowiednie definicje to:

trait ThirdParty { def invoke = println("right") }
trait WeatherIcon { def invoke = println("wrong") }
class MyClass {
    object objA extends ThirdParty
    object objB extends WeatherIcon
}

mamSymbol dlaobjA lubię to:

import reflect.runtime.universe._

val stuff = typeOf[MyClass].members.filter(_.isValue).filter(_.typeSignature <:< typeOf[ThirdParty])

To zwracaIterable z jednym elementem, powiedzmy więc:

val objASymbol = stuff.head.asModuleSymbol

Następnie spróbowałem na podstawieto inne pytanie, to:

val mirror = runtimeMirror(getClass.getClassLoader)
mirror.reflectModule(objASymbol)

Co spowodowało wyświetlenie komunikatu o błędzie na ten temat:

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)

Problem polega na tym, że nie wiem, co ten komunikat o błędzie każe mi robić!

questionAnswers(1)

yourAnswerToTheQuestion