我在循環訪問類中的對象時遇到了一些問題。我在這裏寫了一個小小的演示,所以你可以按照下列步驟操作:循環遍歷類中的對象數組
Tank tanks[] = new Tank[2];
tanks[0] = new Tank();
tanks[1] = new Tank();
tanks[0].doStuff(tanks);
doStuff(Tank[] tanks) {
for (int i = 0; i < tanks.length; i++) {
if (tanks[i].equals(this)) continue;
// Do stuff
}
}
所以,我有一個類型爲Tank的數組。然後我調用Tank類中的doStuff方法。該方法獲取數組並循環遍歷它。然後我想爲每個坦克都做些東西,而不是這個班的當前實例。我希望你能從我的代碼和這個描述中理解。
的問題是,我得到的NullPointerException爲if (tanks[i].equals(this))
我在做什麼錯在這裏?
該代碼無論如何都不會編譯,因爲你試圖把一個單一值('坦克tanks' )作爲一個數組。請修改您的問題以提供一個簡短的*完整*程序來展示問題。 – 2013-05-08 15:45:25
你有沒有重新實現equals方法?如果是,你可以展示它嗎?這是我認爲這個null可能來自的唯一的地方,但只有當你重新實現它並做了錯誤的時候。其餘的都很乾淨。 – 2013-05-08 15:46:21
@JonSkeet你可以使用該語法來創建一個數組。這很奇怪,但他將其聲明爲變量名稱中的數組。 – 2013-05-08 15:48:04