如何在classpath中找到所有接口实现?

new*_*bie 11 java reflection

我正在实现一个接口,现在我想在classpath中获得此接口的所有实现.这可能还是我应该做些什么呢?

Boz*_*zho 25

思考图书馆将让你这样做(在一定程度上):

Set<Class<? extends SomeClassOrInterface>> subTypes = 
     reflections.getSubTypesOf(SomeClassOrInterface.class);
Run Code Online (Sandbox Code Playgroud)

但是我不建议这样做.想象一下,一个典型的类路径有50个外部jar,每个jar都是一个像spring,hibernate,aspectj,jsf等大框架.这需要很长时间.

如果你想拥有某种插件机制,那么其他人可以实现你的接口并提供实现的jar,然后看看 java.util.ServiceLoader


Ste*_*n C 6

充其量,这将是昂贵的.最坏的情况(取决于类加载器)可能是不可能的.

我强烈建议您寻找替代方法来解决您要解决的潜在问题.