簡體   English   中英

如何在classpath中找到所有接口實現?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM