Otrzymuję wyjątek NullPointerException podczas dodawania elementu do tablicy ArrayList, jeśli nie jest zainicjowana tablica ArrayList jako pole. Czy ktoś może wyjaśnić, dlaczego?Java: Inicjalizuj ArrayList w polu OR konstruktora?
WORKS kiedy zainicjować ArrayList jako pole:
public class GroceryBill {
private String clerkName;
private ArrayList<Item> itemsInGroceryList = new ArrayList<Item>();
private double total;
//Constructs a grocery bill object for the given clerk
public GroceryBill(Employee Clerk) {
this.clerkName = Clerk.getEmployeeName();
this.total = 0.0;
}
public void add(Item i) {
itemsInGroceryList.add(i);
}
}
nie działa, gdy Oświadczam ArrayList jako pole następnie zainicjować w konstruktorze klasy:
public class GroceryBill {
private String clerkName;
private ArrayList<Item> itemsInGroceryList;
private double total;
//Constructs a grocery bill object for the given clerk
public GroceryBill(Employee Clerk) {
this.clerkName = Clerk.getEmployeeName();
this.total = 0.0;
ArrayList<Item> itemsInGroceryList = new ArrayList<Item>();
}
public void add(Item i) {
itemsInGroceryList.add(i);
}
}
Zrób to kiedy deklarując samą zmienną instancji, a co więcej możesz ją ustawić jako 'final', ponieważ nigdy jej nie zastępujesz. – fge