我有一个非常简单的问题,但我无法找到正确的答案。
所以在我的项目中我有一个抽象类“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/