2012-05-11 3 views
-1

java에서 15 개의 퍼즐 문제를 해결하는 검색 알고리즘을 작성하고 있습니다. 퍼즐 상태를 복제하여 새로운 가능한 동작 (딸)을 생성 할 때 이들은 분리되지 않고 서로를 변경합니다.복제 메서드 무시 - 작동하지 않음 (Java)

여기 내 복제 방법입니다 :

public FifteenPuzzleState clone() throws CloneNotSupportedException 
{ 
FifteenPuzzleState copy = (FifteenPuzzleState)super.clone(); 
for(int i=0; i<copy.currentConfig.length; i++){ 
    copy.currentConfig[i] = Arrays.copyOf(currentConfig[i], currentConfig[i].length); 
} 
return copy;  
} 

그래서 내 문제는 내가 상태를 복제 한 다음 변경 후, 그것은 또한 이전의 상태와 다른 모든 복제에 영향을 미칠 것입니다. 필자가 생각한 첫 번째 생각은 2 차원 배열의 전체 복사본을 제대로 만들지는 못했지만 위 코드를 잘못 찾지는 못했습니다.

제안 사항? 감사합니다.

+0

복제본을 변경하면 개체의 어떤 부분이 영향을 받습니까? 자동 딥 복사가 없으므로 모든 것을 복제해야합니다. – ChristopheD

+0

딥 클론을 원한다면 자신을 돌봐야합니다. 미안합니다. –

답변

5

정확합니다. 배열의 각 요소를 직접 수동으로 복사해야합니다.

관련 문제