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