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).
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étodoUse 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?