2

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

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

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

对于我的问题:我从这个函数中收到的 Iterable Object 是否已排序。(JmjrstPlugin 实现了 Comparable 接口并且有一个工作的 compareTo 方法)。

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

4

2 回答 2

1

JavadocServiceLoader说:

此工具强制执行的唯一要求是提供程序类必须具有零参数构造函数,以便它们可以在加载期间被实例化。

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

此外,Set除非另有明确说明,否则 a 通常是无序集合。javadoc 没有指定,所以它是无序的。

于 2018-05-27T20:51:21.047 回答
1

Javadoc中所述:

迭代器方法的每次调用都返回一个迭代器,该迭代器首先按实例化顺序产生缓存的所有元素

于 2018-05-27T20:53:45.933 回答