来自 ServiceLoader 的 Iterable Object 是否被排序?

Is the Iterable Object from the ServiceLoader oredered?

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

所以在我的项目中我有一个抽象 class "JmjrstPlugin",其他一些插件从中继承。我正在使用 javas ServiceLoader 查找所有插件 classes,如下所示:

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

关于我的问题:我从这个函数收到的 Iterable Object 是排序的吗? (JmjrstPlugin 实现了 Comparable 接口并具有有效的 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 没有指定,所以它是无序的。

Javadoc 中所述:

Each invocation of the iterator method returns an iterator that first yields all of the elements of the cache, in instantiation order