代码之家  ›  专栏  ›  技术社区  ›  T. Grumser

ServiceLoader中的iterable对象是否已存储?

  •  1
  • T. Grumser  · 技术社区  · 7 年前

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

    所以在我的项目中,我有一个抽象类“jmjrstplugin”,其他插件从这个类继承。我正在使用JavasServiceLoader查找以下所有插件类:

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

    我的问题是:我从这个函数中得到的不可重复的对象是“或”。 (jmjrstplugin实现了可比较的接口,并有一个工作的compareto方法)。

    PS:这个项目目前处于一种状态,这使得我现在无法测试它。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Andreas dfa    7 年前

    的JavaDoc ServiceLoader 说:

    这个 只有 此工具强制要求提供程序类必须具有零参数构造函数,以便在加载期间实例化它们。

    这意味着它不关心实现类是否实现 Comparable 或者没有。

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

        2
  •  1
  •   Andy Turner    7 年前

    Javadoc :

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