Существует множество способов сделать это, но, возможно, ниже приведен один из самых простых, который не предполагает предположений о том, как работает искаженное имя класса сопутствующего объекта Scala:
def getSupportsFieldsCompanion: SupportsField1Companion[this.type] =
scala.reflect.runtime.ReflectionUtils.staticSingletonInstance(
this.getClass.getClassLoader,
this.getClass.getCanonicalName
).asInstanceOf[SupportsField1Companion[this.type]]
Это работаетпо желанию, но я, вероятно, набрал бы его как SupportsField1Companion[_]
, и в идеале я бы, вероятно, избегал использования открытых методов для SupportsField1
, которые ссылаются на SupportsField1Companion
- фактически в идеале . Я бы, вероятно, избежал этогоподход в целом, но если вы преданы делу, я думаю, что приведенное выше решение ReflectionUtil
, вероятно, разумно.