問題

是否可以在給定的包中找到所有類或介面? (Quickly檢視例如 Package ,它似乎沒有.)

  最佳答案

由於類載入器的動態性質,這是不可能的.不需要類載入器告訴VM它可以提供哪些類,而是它們只是傳遞類的請求,並且必須返回一個類或丟擲異常.

但是,如果您編寫自己的類載入器,或者檢查類路徑和它的jar,就有可能找到此資訊.這將透過檔案系統操作,而不是反射.甚至可能有庫可以幫助您做到這一點.

如果有些類被生成或遠端傳遞,那麼您將無法發現這些類。

通常的方法是在某個地方註冊檔案中需要訪問的類,或者在不同的類中引用它們,或者在命名時使用約定。

增編: Reflections Library 將允許您查詢當前類路徑中的類.它可用於在包中獲取所有類:

  Reflections reflections = new Reflections("my.project.prefix");

 Set<Class<? extends Object>> allClasses = 
     reflections.getSubTypesOf(Object.class);
 

  相同標籤的其他問題

javareflectionpackages