可能重複:
At runtime, find all classes in a Java application that extend a base classJava列表父的所有子類
我需要得到所有這些延伸的特定類的類(子)的列表(父)然後創建它們的一個實例。
我應該如何在Java中做到這一點?
可能重複:
At runtime, find all classes in a Java application that extend a base classJava列表父的所有子類
我需要得到所有這些延伸的特定類的類(子)的列表(父)然後創建它們的一個實例。
我應該如何在Java中做到這一點?
我會用http://code.google.com/p/reflections/
使用思考,你可以查詢你的元數據,如:
- 得到
- 得到所有類型/方法/域標註有一些註釋一些類型的所有亞型,不帶註釋參數匹配
- 獲取匹配正則表達式匹配的所有資源
這可以用於索引或緩存模式。正如@Jagger所說,對每個班級的蠻力搜尋相對較慢。您也可以通過打包來限制搜索。 com.mycom.*
我懷疑你可以使用反射API來查找所有擴展給定類的類。但我可能是錯的。即您可以輕鬆使用反射API來獲取某種類型的超類型,但不能獲取某種類型的所有可能的子類型。 – Alderath 2012-04-23 08:08:18
這是圖書館所做的。不要與[反射API](http://docs.oracle.com/javase/tutorial/reflect/index.html)混淆,如你所說,它不會這樣做。 ;) – 2012-04-23 08:12:28
我的錯誤。不理我以前的評論。我主要關注閱讀灰色框,並假定你的意思是java.lang.reflect。 – Alderath 2012-04-23 08:16:17
請看看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
我假設有一些限制,例如一組軟件包。沒有任何約束條件,不可能找到擴展某個類的每個類。 – Jagger 2012-04-23 08:05:00