如何使用java反射获取类中定义的所有导入?

2022-09-03 04:12:08

嗨,我是Java反射领域的新手。因此,任何人都可以在此问题场景中指导我。

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

现在我希望通过反射了解类中定义的所有导入。

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

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

我看到一个问题张贴听到类似于我的Q,但它没有很好地阐述,所以,需要一些好的指导帮助。

提前致谢。


答案 1

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

不能,因为编译器不会将它们放入对象文件中。它把它们扔掉了。导入只是编译器的简写。


答案 2

导入是一个编译时功能 - 编译后的代码在提到的所有位置都使用类型全名的版本,使用*导入所有内容的版本和按全名导入类的版本之间没有区别。

如果要查找已编译代码中使用的所有类型,则情况略有不同。您可能希望将 BCEL 视为分析字节码的一种方法。