繁体   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