获取要加载的类的必要类列表

时间:2013-07-29 15:32:47

标签: java reflection import

我想获取一个类的导入列表。由于编译器将其删除,我认为通过反射可以扫描类,它的方法,字段等,并收集类加载类所需的类列表。是否有某种类型的库,教程或文章可以指向我,以便我能更好地理解如何做到这一点? (我知道有类似的问题已被提出,但我找不到合适的答案,我确信这应该是可能的)。我看到了一些示例,展示了如何使用这些来源,但是在我的场景中并不一定如此。

非常感谢提前!

2 个答案:

答案 0 :(得分:8)

不,反思无济于事

void test() {
    Date date = new Date();
}

你无法检测到在反射方法中使用Date。但您可以使用Javassist https://github.com/jboss-javassist/javassist

    ClassPool cp = ClassPool.getDefault();
    Collection classes = cp.get("test.Test").getRefClasses();

此代码生成test.Test类

中引用的所有类的名称的集合

答案 1 :(得分:1)

除非通过阅读源.java文件本身,否则我认为这不可能。我非常确定Java只是在编译期间使用列表进行扫描然后将其抛弃。

然而,Spring会做这样的事情,并且有一个谷歌项目可以扫描包注释等(忘记名称 - 类路径?)。

我建议你看一下春天,它可能会完全符合你的需要而且更多,并且会以下一个程序员自动理解的方式(如果他们知道Spring)来实现。