Se so a cosa verrà inizializzato un campo, dovrei inizializzarlo nel campo, costruttore o riceverlo come parametro? Sto chiedendo le migliori pratiche. Tutte e tre le opzioni forniscono in modo efficace lo stesso risultato. Non sto considerando quello che succede dietro le quinte, perché penso che sarebbe insignificante.
Questa è una domanda generale per curiosità. Al momento non ho un problema specifico, anche se in passato. Userò un ArrayList nel seguente esempio, perché è un caso in cui si sa a cosa verrà inizializzato, e se si finisce volendo inizializzarlo su un altro ArrayList esistente, non c'è nulla di male pre-inizializzandolo. O c'è?
Ad esempio, dove dovrei inizializzare un ArrayList?
Inizializzato nel campo:
import java.util.ArrayList;
public class Initializer {
private ArrayList<String> arrayList = new ArrayList<String>();
public void addString(String string) {
arrayList.add(string);
}
}
Inizializzato in Constructor:
import java.util.ArrayList;
public class Initializer {
private ArrayList<String> arrayList;
public Initializer() {
arrayList = new ArrayList<String>();
}
public void addString(String string) {
arrayList.add(string);
}
}
Inizializzato come parametro:
import java.util.ArrayList;
public class Initializer {
private ArrayList<String> arrayList;
public Initializer(ArrayList arrayList) {
this.arrayList = arrayList;
}
public void addString(String string) {
arrayList.add(string);
}
}