![](/img/trans.png)
[英]How to find all implementations of a Java interface, without instantiating them all
[英]How can I find all implementations of interface in classpath?
我正在實現一個接口,現在我想在classpath中獲得此接口的所有實現。 這可能還是我應該做些什么呢?
Reflections庫可以讓你這樣做(在某種程度上):
Set<Class<? extends SomeClassOrInterface>> subTypes =
reflections.getSubTypesOf(SomeClassOrInterface.class);
但是我不建議這樣做。 想象一下一個帶有50個外部jar的典型類路徑,每個jar都是一個像spring,hibernate,aspectj,jsf等大框架。這需要很長時間。
如果你想擁有某種插件機制,那么其他人可以實現你的接口並提供實現的jar,然后看看java.util.ServiceLoader
充其量,這將是昂貴的。 最壞的情況(取決於類加載器)可能是不可能的。
我強烈建議您尋找替代方法來解決您要解決的潛在問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.