[英]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.