2013-10-14 7 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

예쁜 확인합니다. –

+0

'클래스 피스 '구현 방법 – 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 당신의 이름을 개선해야한다.) 당신의 필드는`static` 있습니다

+0

정말 빠릅니다. – Maroun