【发布时间】:2013-01-12 01:43:21
【问题描述】:
如果 ArrayList 未初始化为字段,则在将项目添加到 ArrayList 时,我会收到 NullPointerException。谁能解释一下为什么?
当我将 ArrayList 初始化为字段时有效:
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);
}
}
当我将 ArrayList 声明为字段然后在 Class 构造函数中对其进行初始化时不起作用:
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);
}
}
【问题讨论】:
-
在声明实例变量本身时执行此操作,而且您可以将其设为
final,因为您永远不会覆盖它。