Java ServiceLoader中的Iterable对象是否已排序?
我有一个很简单的问题,但我找不到正确的答案 所以在我的项目中,我有一个抽象类“JmjrstPlugin”,其他一些插件从中继承。我使用javas ServiceLoader查找所有插件类,如下所示:Java ServiceLoader中的Iterable对象是否已排序?,java,iterable,serviceloader,Java,Iterable,Serviceloader,我有一个很简单的问题,但我找不到正确的答案 所以在我的项目中,我有一个抽象类“JmjrstPlugin”,其他一些插件从中继承。我使用javas ServiceLoader查找所有插件类,如下所示: public static Iterable<JmjrstPlugin> getPlugins() { return ServiceLoader.load(JmjrstPlugin.class); } publicstaticiterable getPlugins(){
public static Iterable<JmjrstPlugin> getPlugins() {
return ServiceLoader.load(JmjrstPlugin.class);
}
publicstaticiterable getPlugins(){
返回ServiceLoader.load(JmjrstPlugin.class);
}
我的问题是:我从这个函数中接收到的Iterable对象是Ordered吗。
(JmjrstPlugin实现了Comparable接口,并有一个compareTo方法)
PS:该项目目前处于一种状态,我现在无法对其进行测试。Javadoc of说:
此工具强制执行的唯一要求是提供程序类必须具有零参数构造函数,以便在加载期间可以实例化它们
这意味着它不关心您的实现类是否实现了compariable
此外,集合
通常是无序集合,除非另有明确规定。javadoc没有指定,因此它是无序的。如中所述:
迭代器方法的每次调用都返回一个迭代器,该迭代器首先按照实例化顺序生成缓存的所有元素