java - ServiceLoader 中的 Iterable 对象是有序的吗?

标签 java iterable serviceloader

我有一个非常简单的问题,但我无法找到正确的答案。

所以在我的项目中我有一个抽象类“JmjrstPlugin”,其他一些插件继承自该类。我使用 javas ServiceLoader 来查找所有插件类,如下所示:

public static Iterable<JmjrstPlugin> getPlugins() {   
     return ServiceLoader.load(JmjrstPlugin.class);
}

对于我的问题:我从此函数收到的可迭代对象是否是有序的。 (JmjrstPlugin 实现了 Comparable 接口(interface),并且有一个可用的 CompareTo 方法)。

PS:该项目目前所处的状态使我无法立即对其进行测试。

最佳答案

ServiceLoader 的 Javadoc说:

The only requirement enforced by this facility is that provider classes must have a zero-argument constructor so that they can be instantiated during loading.

这意味着它并不关心您的实现类是否实现Comparable

此外,Set 通常是无序集合,除非另有明确指定。 javadoc 没有指定,因此它是无序的。

关于java - ServiceLoader 中的 Iterable 对象是有序的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50556320/

相关文章:

java - 为什么不能循环直接实现 Iterator 的类?

java - Spring 中是否有 ServiceLoader 的类似物以及如何使用它?

java - 使用 java serviceloader build with jdk 8 在 >= java 9 中使用

java - 是否可以在@RabbitListener 上设置预取计数

java - 有没有办法以二进制形式显示 float ?

java - 如何使用 JAVA EE 获取用于下载文件的 HttpServletResponse 实例

java.util.ServiceLoader 没有加载我的提供者类

java - 在 JSF 页面设置要访问 "local"的 "globally"变量

python - list() 与 Python 3.5+ 中的可迭代拆包

python - 在python循环中匹配整数