Рассмотрим этот код:
object A {
object AA extends A
object AB extends A
object AC extends A
}; class A
Как можно "видеть" объекты, определенные в объекте A во время выполнения?
Я думал, что метод внутри object A с некоторым простым кодом отражения будет достаточным, но кажется, что компилятор выравнивает иерархию объектов во время компиляции и создает следующие файлы классов:
-
A.class- Класс A -
A$class- Сопутствующий объект A -
A$AA$.class- Объект AA -
A$AB$.class- объект AB -
A$AC$.class- Объект AC
После компиляции в объекте-компаньоне A нет знака о AA, AB или AC, который имел бы мой magicMethod.
Кажется, что класс ClassLoader имеет некоторые связанные методы для того, что я планирую делать, но все, кажется, ожидают точного строкового имени класса. Есть ли способ попросить ClassLoader найти все файлы классов, начиная с класса, из которого этот метод вызывается (A$) в пути этого класса?