0
我的代碼:爲什麼會拋出空指針異常?
static List<Object> data;
private void addItem(List<Object> list) {
try {
data = new ArrayList<Object>();
list.add("test");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ListTest test = new ListTest();
test.addItem(data);
}
上面的代碼拋出NullPointerException
。下面的代碼不會拋出NPE。
static List<Object> data = new Vector<Object>();
private void addItem(List<Object> list) {
try {
list.add("test");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ListTest test = new ListTest();
test.addItem(data);
}
上面的代碼不會拋出NullPointerException
。我不明白兩者的區別。
在第一種情況下'static ... data'沒有被初始化,所以它得到了默認的'null'值,並且你得到了一個NPE。 – 2015-04-03 19:50:07
因爲http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – chancea 2015-04-03 19:50:54
NullPointerException - 在變量不正確後查找'.'或'[''組。 – 2015-04-03 19:54:23