Uso de fábricas de coleção Java 9

No contexto dos comentários e respostas dados emList.of () ou Collections.emptyList () eList.of (...) ou Collections.unmodifiableList () Eu vim com duas regras práticas a seguir (que também se aplicam aSet eMap fábricas em conformidade).

Não substitua todas as ocorrências

Continue usandoCollections.emptyList() para legibilidade e quando, por exemplo, inicializando membros de campo lento como:

class Bean {
  private List<Bean> beans = Collection.emptyList();
  public List<Bean> getBeans() {
    if (beans == Collections.EMPTY_LIST) { beans = new ArrayList<>(); }
    return beans;
  }
}
Use novas fábricas como construtores de argumentos de método

Use novas fábricasList.of() e variantes como versão rápida e de menor digitação, ao chamar um executável comList parâmetro (s). Aqui estão meus padrões de substituição atuais:

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

Em um uso fictício deCollections.indexOfSubList, as seguintes linhas

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));

vai ler

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));

Você (des) concorda?

questionAnswers(2)

yourAnswerToTheQuestion