Использование Java 9 коллекционных фабрик

В контексте комментариев и ответов наList.of () или Collections.emptyList () а такжеList.of (...) или Collections.unmodifiableList () Я придумал два следующих практических правила (которые также относятся кSet а такжеMap заводы соответственно).

Не заменяйте все случаи

Продолжайте использоватьCollections.emptyList() для удобочитаемости и, например, когда инициализация ленивых членов поля, таких как:

class Bean {
  private List<Bean> beans = Collection.emptyList();
  public List<Bean> getBeans() {
    if (beans == Collections.EMPTY_LIST) { beans = new ArrayList<>(); }
    return beans;
  }
}
Используйте новые фабрики в качестве конструкторов аргументов метода

Используйте новые заводыList.of() и варианты как быстрая и менее типичная версия при вызове исполняемого файла сList Параметр (ы). Вот мои текущие шаблоны замещения:

Collections.emptyList()       --> List.of()
Collections.singletonList(a)  --> List.of(a)
Arrays.asList(a, ..., z)      --> List.of(a, ..., z)

В вымышленном использованииCollections.indexOfSubList, следующие строки

Collections.indexOfSubList(Arrays.asList(1, 2, 3), Collections.emptyList());
Collections.indexOfSubList(Arrays.asList(1, 2, 3), Collections.singletonList(1));
Collections.indexOfSubList(Arrays.asList(1, 2, 3), Arrays.asList(1));
Collections.indexOfSubList(Arrays.asList(1, 2, 3), Arrays.asList(2, 3));
Collections.indexOfSubList(Arrays.asList(1, 2, 3), Arrays.asList(1, 2, 3));

буду читать

Collections.indexOfSubList(List.of(1, 2, 3), List.of());
Collections.indexOfSubList(List.of(1, 2, 3), List.of(1));
Collections.indexOfSubList(List.of(1, 2, 3), List.of(1));
Collections.indexOfSubList(List.of(1, 2, 3), List.of(2, 3));
Collections.indexOfSubList(List.of(1, 2, 3), List.of(1, 2, 3));

Вы (не) согласны?

Ответы на вопрос(2)

Ваш ответ на вопрос