如何在类路径中找到所有接口实现?

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

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

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

Reflections库可以让你这样做(在某种程度上):

Set> subTypes = reflections.getSubTypesOf(SomeClassOrInterface.class); 

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

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