簡體   English   中英

如何在JVM中找到java.lang.Throwable的所有子類?

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

我有兩個疑惑:

  1. 為什么結果是java.lang.Exceptionjava.lang.RuntimeException 我使用前綴"org"
  2. 為什么java.lang.NullPointerException不在結果中? 它也在 package“java.lang”中。
  1. Reflections庫的 Javadoc 說“Reflections 掃描並索引項目的類路徑”,因此它不是在“JVM 中”查找,而是在類路徑中查找文件並使用 Class Loader https://github.com/ronmamo/加載它們反射/blob/master/src/main/java/org/reflections/Reflections.java

  2. Reflections.expandSuperTypes()的 Javadoc 似乎暗示傳遞給Reflectionsprefix是為了需要找到的東西,而不是掃描的東西,它必須包含超類型才能找到您的特定 package 目標

  3. 這就是它沒有列出NullPointerException的原因,因為它沒有被 #2 中解釋的expandSuperTypes()掃描

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM