2012-04-23 66 views
3

可能重複:
At runtime, find all classes in a Java application that extend a base classJava列表父的所有子類

我需要得到所有這些延伸的特定類的類(子)的列表(父)然後創建它們的一個實例。

我應該如何在Java中做到這一點?

+0

請看看http://stackoverflow.com/questions/205573/at-runtime-find-all-classes-in-a-java-application-that-extend-a-base-class – 2012-04-23 08:04:28

+0

我假設有一些限制,例如一組軟件包。沒有任何約束條件,不可能找到擴展某個類的每個類。 – Jagger 2012-04-23 08:05:00

回答

4

我會用http://code.google.com/p/reflections/

使用思考,你可以查詢你的元數據,如:

  • 得到
  • 得到所有類型/方法/域標註有一些註釋一些類型的所有亞型,不帶註釋參數匹配
  • 獲取匹配正則表達式匹配的所有資源

這可以用於索引或緩存模式。正如@Jagger所說,對每個班級的蠻力搜尋相對較慢。您也可以通過打包來限制搜索。 com.mycom.*

+0

我懷疑你可以使用反射API來查找所有擴展給定類的類。但我可能是錯的。即您可以輕鬆使用反射API來獲取某種類型的超類型,但不能獲取某種類型的所有可能的子類型。 – Alderath 2012-04-23 08:08:18

+1

這是圖書館所做的。不要與[反射API](http://docs.oracle.com/javase/tutorial/reflect/index.html)混淆,如你所說,它不會這樣做。 ;) – 2012-04-23 08:12:28

+1

我的錯誤。不理我以前的評論。我主要關注閱讀灰色框,並假定你的意思是java.lang.reflect。 – Alderath 2012-04-23 08:16:17

相關問題