gpt4 book ai didi

java - ServiceLoader 查找接口(interface)的实现

转载 作者:IT老高 更新时间:2023-10-28 20:25:34 26 4
gpt4 key购买 nike

我尝试使用 Java ServiceLoader找到所有实现特定接口(interface)的类,如下所示:

loader = ServiceLoader.load(Operation.class);
try {
for (Operation o : loader) {
operations.add(o);
}
} catch (ServiceConfigurationError e) {
LOGGER.log(Level.SEVERE, "Uncaught exception", e);
}

不幸的是,当我在 Debug模式下运行 Eclipse 时,ServiceLoader 找不到任何类。我觉得我错过了一个琐碎的点......

最佳答案

ServiceLoader 做不到。

为了将类公开为可以被 ServiceLoader 发现的服务,您需要将其名称放入提供程序配置文件中,如 Creating Extensible Applications With the Java Platform 中所述.

没有内置方法可以找到所有实现特定接口(interface)的类。可以做类似事情的框架使用自己的类路径扫描解决方案(即使使用自定义类路径扫描也不容易,因为 .class 文件只存储有关直接实现的接口(interface)的信息,而不是传递的)。

关于java - ServiceLoader 查找接口(interface)的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304100/

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