Java 如何找到继承给定接口的类实例?

Java 如何找到继承给定接口的类实例?,java,netbeans,interface,jvm,lookup,Java,Netbeans,Interface,Jvm,Lookup,我正在寻找一种方法来查找JVM中当前运行的所有继承给定接口的实例,比如interfaceA。我最初收到的建议是使用 Lookup.getDefault().lookupAll(interfaceA.class); 与 在定义实现interfaceA的类之前。我发现这确实找到了实现interfaceA的类。但是,我非常确信,Lookup使用java反射为我提供了该类的一个新实例。我最大的问题是,我无法确定可以将哪些库引入到我的Netbeans项目中,否则前面的一个问题就可以回答这个问题 这样的动

我正在寻找一种方法来查找JVM中当前运行的所有继承给定接口的实例,比如interfaceA。我最初收到的建议是使用

Lookup.getDefault().lookupAll(interfaceA.class);

在定义实现interfaceA的类之前。我发现这确实找到了实现interfaceA的类。但是,我非常确信,Lookup使用java反射为我提供了该类的一个新实例。我最大的问题是,我无法确定可以将哪些库引入到我的Netbeans项目中,否则前面的一个问题就可以回答这个问题

这样的动物存在于纯Java还是非常有名的库中


谢谢

否。由于java在需要时动态加载类,因此无法真正“枚举”JVM可用的所有类。大多数用于实现这一点的机制都涉及预先列出路径上某个位置的所有子类(xml文件、属性文件)并使用这些子类,或者通过某个容器将它们标记为某种运行时处理(您的@ServiceProvider注释)。JavaEE、Spring和guice是一些众所周知的容器,但这样的代码在这样的容器之外无法工作


我还看到过试图在类路径上迭代所有JAR的代码,但这种代码非常脆弱,通常与运行它的特定环境有关

我很害怕。我将使查找方法工作。谢谢你的帮助。
@ServiceProvider(service=interfaceA.class)