Я хочу извлечь все Class
зависимости из заданного Class
(чтобы создать тест Arquillian с моим Класс и все его зависимости).
Мне просто удается это сделать (используя CtClass.getRefClasses()
из Javassist), но я застрял с дженериками (похоже, Javassist правильно анализирует дженерики, но не имеет никакого API для их получения).
Вот ядро моего рекурсивного метода inspect
на данный момент:
for (String className : (Iterable<String>)ClassPool.getDefault().get(klass.getName()).getRefClasses()) {
try {
inspect(Class.forName(className), classSet); // recursion
} catch ( // ClassNotFoundException and NoClassDefFoundError handling
}
}
Эта итерация работает правильно для получения всех зависимостей Class
es, но если Class
, который я хочу проверить, манипулирует, например, List<MyClass>
, у меня не будет MyClass
из Collection
, возвращенного getRefClasses()
.
Я проверил файл .class
, и в байт-коде есть эта информация (Ljava/util/List<Lmy/company/MyClass;>;
).
Знаете ли вы другой API, который я мог бы использовать для извлечения всех используемых Class
es из заданного Class
?