你好,我是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
}
我只想知道类中使用反射定义的所有导入的列表。
- 我看到一个Question张贴听到类似于我的Q,但它不是很好地阐述,所以,需要一些很好的方向的帮助.*
先谢谢你了。
5条答案
按热度按时间cgyqldqp1#
正如@Asraful Haque所建议的,qdox有助于读取java文件的导入
使用Maven依赖项
请参考代码的修改版本
qojgxg4l2#
感谢您分享qdox,我使用它递归地查找所有导入,并查找唯一的包和唯一的导入。
使用简单递归获取给定类的所有包和导入。
dly7yett3#
我只想知道类中使用反射定义的所有导入的列表
你不能这样做,因为编译器不会把它们放进目标文件,而是把它们丢弃了。Import只是编译器的一个缩写。
js81xvg64#
导入是一个编译时的特性--无论是在哪里提到类型都使用类型的全名的版本,还是使用 * 导入所有内容的版本,以及使用全名导入类的版本,对编译后的代码没有任何区别。
如果你想在编译后的代码中找到所有使用过的类型,那就有点不同了,你可能想看看BCEL作为分析字节码的一种方法。
vaj7vani5#
我认为可以使用Qdox来获取类中的所有导入,这实际上并不通过反射,但它可以满足您的目的: