2013-10-14 59 views
-1

奇數個的位。我正在嘗試創建一個棋盤遊戲(西洋雙陸棋)並創建了一個名爲piece的對象。我的船上,我想創建件將對象添加到數組列表中 - 以相同的值結束

ArrayList<piece> pieces = new ArrayList<piece>(); 

piece newPiece = new piece(1, 1, "red", "top"); 
piece newPiece2 = new piece(1, 2, "black", "top"); 

pieces.add(newPiece); 
System.out.println(newPiece.getCol()); 
pieces.add(newPiece2); 
System.out.println(newPiece2.getCol()); 

我期待的輸出是「紅」,那麼「黑」的一個數組列表,但實際上我得到「黑」,那麼「黑」?有什麼建議,爲什麼這可能會發生?

+3

很肯定你的領域是'static'。 –

+0

'class piece'如何實現 – RamonBoza

回答

9

ArrayList在這裏是一個紅鯡魚 - 你甚至從來沒有再次取出這些碎片。你會看到完全一樣的行爲與眼前這個代碼:

piece newPiece = new piece(1, 1, "red", "top"); 
piece newPiece2 = new piece(1, 2, "black", "top"); 
System.out.println(newPiece.getCol()); 
System.out.println(newPiece2.getCol()); 

我強烈懷疑的錯誤是在piece類 - 你使用存儲顏色的變數,可能是一個靜態變量,而不是實例變量。靜態變量與類型相關,而不是類型的任何特定實例,所以如果在構造函數中覆蓋靜態變量的值,那麼當您再次獲取靜態變量時,您將始終看到該值。你希望每個實例都有不同的狀態,所以你應該有實例變量。

(另外,你應該提高你的名字,例如Piece代替piecegetColor代替getCol。)

+0

這真的很快.. – Maroun

相關問題