-1
私はjavaの15の問題を解決するための検索アルゴリズムを書いています。 パズルの状態をクローンして、新しい可能な動き(娘)を生成するとき、それらは別々になるのではなく、お互いを変えます。クローンメソッドをオーバーライドする - 動作しない(Java)
は、ここに私のcloneメソッドです:
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;
}
だから私の問題は、私は状態のクローンを作成し、それを変更した後、それはまた、以前の状態とすべての他のクローンに影響を与えることです。 私の最初の考えは、2d配列のディープコピーを正しく作成しなかったことですが、上記のコードで何か問題があるとは限りません。
提案がありますか? ありがとう
オブジェクトのどの部分がクローンの変更の影響を受けますか?オートディープコピーはありませんので、すべてをクローンする必要があります。 – ChristopheD
深いクローンが必要な場合は、ご自身で対応しなければなりません。申し訳ありません。 –