Olá Felipe, concordo com o Emerson, no cenário apresentado em seu exemplo tanto faz. Só que temos que tomar alguns cuidados:
- ao inicializar somente no construtor, principalmente quando existe mais que um, não podemos esquecer de colocar a inicialização nos demais;
- dependendo do uso da classe, talvez seja desnecessário adicionar uma lista na memória (aí tanto faz se instanciar na classe ou no construtor);
- caso não vá fornecer o método set() do atributo, deve ser inicializado na classe, no construtor ou no get() (excluindo os casos onde se trata de uma lista para uso interno da classe, sem get());
Isso é bem particular do problema que queira resolver, não existe uma regra.
Ainda temos um outro cenário muito comum:
public class Teste {
private List<String> lista2;
public List<String> getLista2() {
if (this.lista2 == null) {
this.lista2 = new ArrayList<>();
}
return this.lista2;
}
}