代码之家  ›  专栏  ›  技术社区  ›  newbie

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

  •  11
  • newbie  · 技术社区  · 16 年前

    我正在实现一个接口,现在我想在类路径中获取这个接口的所有实现。这是可能的还是我应该做点别的?

    2 回复  |  直到 7 年前
        1
  •  6
  •   Stephen C    16 年前

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

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

        2
  •  24
  •   Bren    12 年前

    这个 Reflections 图书馆会让你在某种程度上做到这一点:

    Set<Class<? extends SomeClassOrInterface>> subTypes = 
         reflections.getSubTypesOf(SomeClassOrInterface.class);
    

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

    如果您希望拥有某种插件机制,以便其他人能够实现您的接口并为实现提供JAR,那么请看 java.util.ServiceLoader