如何使用javareflection在类中定义所有导入?

嗨,我是javareflection域的新手。所以任何人都可以在这个问题场景中指导我。

我有一个名为“SomClass.java” ,它导入一个名为“SomPackage.RefClass” 的包和一些其他java库,如java.lang ..等。

现在我希望通过reflection了解一个类中定义的所有导入。

import SomPackage.RefClass; import java.lang.reflect.Field; import java.io.IOException; public class SomeClass{ RefClass refClass_Obj; String nationality; ///some other members } 

我只想知道使用reflection在类中定义的所有导入的列表。

我看到一个问题听到的类似于我的问题,但是没有详细阐述,所以需要一些良好的帮助方向。

提前致谢。

我只想知道使用reflection在类中定义的所有导入的列表

你不能因为编译器没有将它们放入目标文件中。 它把它们抛弃了。 导入只是编译器的简写。

导入是一个编译时function – 在使用所提到的类型的全名的版本,使用*导入所有内容的版本和使用全名导入类的版本之间的编译代码没有区别。

如果要查找已编译代码中使用的所有类型,那就有点不同了。 您可能希望将BCEL视为分析字节码的一种方式。

我认为你可以使用Qdox来获取一个实际上不通过reflection的类中的所有导入,但它可以服务于你的目的:

  String fileFullPath = "Your\\java\\ file \\full\\path"; JavaDocBuilder builder = new JavaDocBuilder(); builder.addSource(new FileReader( fileFullPath )); JavaSource src = builder.getSources()[0]; String[] imports = src.getImports(); for ( String imp : imports ) { System.out.println(imp); }