You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找JVM中java.lang.Throwable的所有子类?Reflections使用疑问

问题解答

疑问1:指定扫描"org"前缀却出现java.lang包的类

这是因为Reflections的默认逻辑会把已被JVM加载的Throwable子类全部纳入结果,不管这些类属于哪个包。你指定的"org"只是新增的扫描路径,并非限制只扫描这个包——默认情况下它还会包含当前JVM已加载类中符合条件的子类。java.lang.Exception和java.lang.RuntimeException是Throwable的直接子类,启动Java程序时这些类就已被JVM加载,所以会出现在结果里。

疑问2:同属java.lang包的NullPointerException不在结果中

原因是java.lang.NullPointerException此时还未被JVM加载,同时它也不在你指定的"org"扫描路径下。Reflections只能找到已加载的类,或者指定扫描路径下的类,自然不会把它纳入结果。

额外提示

如果需要调整扫描范围或规则,可以修改Reflections的配置:

  • 若要严格只扫描指定包的子类,需自定义Configuration,关闭对已加载类的检测
  • 若要扫描java.lang这类核心包,可把包路径加入扫描范围(比如new Reflections("org", "java.lang")),但注意JDK核心类由Bootstrap类加载器加载,Reflections默认用应用类加载器,可能无法完整扫描到所有核心类子类。

内容的提问来源于stack exchange,提问作者Bourbon_7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:35:26