gpt4 book ai didi

java - 如何找到继承给定接口(interface)的类实例?

转载 作者:行者123 更新时间:2023-11-30 11:34:53 26 4
gpt4 key购买 nike

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

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

@ServiceProvider(service=interfaceA.class)

在定义实现 interfaceA 的类之前。我发现这确实找到了实现 interfaceA 的类。但是,我很确定 Lookup 使用 java 反射为我提供了该类的新实例。我最大的问题是我在可以将哪些库引入我的 Netbeans 项目方面受到限制,否则之前的问题会回答这个问题。

这种动物是否存在于纯 Java 或非常知名的库中?

谢谢

最佳答案

没有。由于 java 在需要时动态加载类,因此您无法真正“枚举”JVM 可用的所有类。用于执行此操作的大多数机制涉及提前在路径上的某处(一个 xml 文件、一个属性文件)列出所有子类并使用它,或者将它们标记为由某个容器进行某种运行时处理(您的 @ServiceProvider 注释) . Java EE、Spring 和 guice 是一些众所周知的容器 - 但此类代码无法在此类容器之外运行。

我还看到过尝试遍历类路径上所有 jar 的代码,但此类代码非常脆弱,通常与它运行的特定环境相关联。

关于java - 如何找到继承给定接口(interface)的类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15416755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com