我想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
我要检查的操作例如 a List<MyClass>
,我将不会MyClass
从Collection
返回的 by中获得getRefClasses()
。
我检查了.class
文件,字节码有该信息(Ljava/util/List<Lmy/company/MyClass;>;
)。
你知道另一个 API 可以用来从给定的 es中提取所有使用的 es吗?Class
Class