我正在實現一個接口,現在我想在類路徑中獲得此接口的所有實現。這是可能的還是我應該做別的事情?如何在類路徑中找到所有接口的實現?
回答
在最好的情況,這將是昂貴的。在最壞的情況下(取決於類加載器)它可能是不可能的。
我強烈建議您尋找您嘗試解決的潛在問題的替代方法。
的Reflections庫將讓你這樣做(在某種程度上):
Set<Class<? extends SomeClassOrInterface>> subTypes =
reflections.getSubTypesOf(SomeClassOrInterface.class);
不過,我不會建議。設想一個典型的帶有50個外部罐子的類路徑,每個罐子都是一個像Spring,hibernate,aspectj,jsf等這樣的大框架。這需要花費很多時間。
如果你想有某種插件機制,以便其他人可以與執行實施您的接口和電源罐,再看看java.util.ServiceLoader
Nifty ........ .. – 2010-06-26 07:50:59
+1我從來不知道'java.util.ServiceLoader'存在 - 非常方便。 – 2014-04-29 08:15:59
感謝您的回答!雖然您不推薦使用它,但我有一個似乎非常適合此解決方案的用例,並且我可以異步運行查詢,而不會對應用程序的運行產生很大影響。然後我只在他們完成收集時才提供結果。 – 2015-05-20 08:31:06
- 1. 查找類實現的所有接口
- 2. 如何在代碼中找到接口的所有實現?
- 3. 實現接口嚮導 - 如何找到接口的「類型庫」?
- 4. 如何在groovy項目中的classpath中找到接口的所有實現?
- 5. 尋找實現C#接口的所有類 - 類似於Java
- 6. 調用實現接口的所有類
- 7. 如何在Eclipse中找到哪些類實現多個接口?
- 8. Android Studio - 如何在所有實現類中實現接口方法?
- 9. java設置類實現接口的類路徑
- 10. 如何列出實現給定接口集合的類路徑上的所有類
- 11. 查找所有實現特定接口的類
- 12. 如何查找某個接口的所有實現?
- 13. 從接口中查找實現的類
- 14. 如何在java中實現接口類
- 15. 如何獲得Guice的所有實現者/接口的子類?
- 16. 如何在AON圖中找到所有可能的路徑?
- 17. 找到實現接口
- 18. 我該如何跟蹤(枚舉)實現接口的所有類
- 19. 如何獲得實現指定接口的所有類
- 20. 如何獲取類實現的所有接口?
- 21. NUnit - 如何測試實現特定接口的所有類
- 22. 如何實現readlink以查找路徑
- 23. 找到所有類和接口一個類擴展或實現遞歸
- 24. 如何在Eclipse中查找接口的所有實例?
- 25. 獲取在WinRT中實現給定接口的所有類
- 26. 測試在Java中實現接口的所有類
- 27. PhpStorm:在所有類中實現新的接口函數
- 28. 如何在autofac中註冊通用接口的所有實現?
- 29. java不會在類路徑中找到類所需的類
- 30. 如何在實現接口的類中實現靜態方法?
如果你的意思是,你想一次性找到所有的實現作爲一個開發練習,我會使用Bozho指出的工具。如果你的意思是在運行時,作爲你的程序的一部分,就像Stephen C一樣,我強烈建議你做別的事情。 :-) – 2010-06-26 07:52:10
[查找java類實現接口]的可能重複(http://stackoverflow.com/questions/435890/find-java-classes-implementing-an-interface) – 2010-06-26 07:59:18