我想获得一个类的导入列表。由于这是由编译器删除的,我想通过反射可以扫描类、它的方法、字段等,并收集类加载器加载类所需的类列表。有没有什么图书馆、教程或文章可以让我更好地了解如何做到这一点?(我知道有人问过类似的问题,但我找不到合适的答案,我很确定这应该是可能的)。我看到了一些例子,展示了如果你有消息来源,你如何做到这一点,但在我的场景中不一定是这样。
非常感谢!
不,反射对没有帮助
void test() {
Date date = new Date();
}
您无法检测到在具有反射的方法内部使用了Date。但是你可以使用Javassisthttps://github.com/jboss-javassist/javassist
ClassPool cp = ClassPool.getDefault();
Collection classes = cp.get("test.Test").getRefClasses();
此代码生成测试中引用的所有类的名称的集合。测试类
我认为这是不可能的,除非读取源.java文件本身。我确信Java只是在编译过程中使用列表进行扫描,然后就把它扔掉了。
然而,Spring确实做了这样的事情,而且有一个谷歌项目可以扫描包中的注释等(忘记名称--classpath?)。
我建议你看看spring,它很可能正是你想要的,而且做得更多,而且它的方式会让下一个程序员自动理解(如果他们知道spring的话)。