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

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

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


我的问题是:我是否已从此函数收到Iterable Object。
(JmjrstPlugin实现Comparable接口并具有有效的compareTo方法)。

PS:该项目目前处于无法使用的状态,因此我现在无法对其进行测试。

最佳答案

ServiceLoader的Javadoc说:


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


这意味着不管您的实现类是否实现Comparable

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

09-25 20:41