[英]How to find all sub classes of java.lang.Throwable in the JVM?
我想在java.lang.Throwable
中找到 java.lang.Throwable 的所有子类。这些类可能已经加载也可能没有加载到 JVM 中。
我读过类似的问题How do you find all subclasses of a given class in Java? ,我认为org.reflections可以解决我的问题。
我尝试了以下代码:
public static void main(String[] args) {
Reflections reflections = new Reflections( "org" ) ;
Set<Class<? extends Throwable>> set = reflections.getSubTypesOf( Throwable.class ) ;
for (Class<? extends Throwable> t : set) {
System.out.println( t ) ;
}
}
但结果不是我所期望的:
class java.lang.Exception
class java.lang.RuntimeException
class org.reflections.ReflectionsException
我有两个疑惑:
java.lang.Exception
和java.lang.RuntimeException
? 我使用前缀"org" 。java.lang.NullPointerException
不在结果中? 它也在 package“java.lang”中。 该Reflections
库的 Javadoc 说“Reflections 扫描并索引项目的类路径”,因此它不是在“JVM 中”查找,而是在类路径中查找文件并使用 Class Loader https://github.com/ronmamo/加载它们反射/blob/master/src/main/java/org/reflections/Reflections.java
Reflections.expandSuperTypes()
的 Javadoc 似乎暗示传递给Reflections
的prefix
是为了需要找到的东西,而不是扫描的东西,它必须包含超类型才能找到您的特定 package 目标
这就是它没有列出NullPointerException
的原因,因为它没有被 #2 中解释的expandSuperTypes()
扫描
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.