Рассмотрим этот код:
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$
) в пути этого класса?