Ошибка отражения Scala: это внутренний модуль, используйте отражениеModule для InstanceMirror, чтобы получить его ModuleMirror

Вслед заэтот вопросЯ пытаюсь выяснить, как вызвать метод объекта. Соответствующие определения:

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

Я получилSymbol заobjA как это:

import reflect.runtime.universe._

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

Это возвращаетIterable с одним элементом, так скажем:

val objASymbol = stuff.head.asModuleSymbol

Затем я попытался, основываясь наэтот другой вопрос, этот:

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

В результате чего сообщение об ошибке цитируется по теме:

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)

Проблема в том, что я не могу понять, что говорит мне это сообщение об ошибке!

Ответы на вопрос(1)

Ваш ответ на вопрос