私はJavaを学んでいますが、同じ問題に何度も遭遇し続けています
あるオブジェクトの古い状態に効率的に戻すにはどうすればよいですか?
public class Example {
MyObject myLargeObject;
public void someMethod(){
MyObject myLargeMyObjectRecovery = myLargeObject;
/**
* Update and change myLargeObject
*/
if(someCondition){
//revert to previous state of myLargeObject
myLargeObject = myLargeMyObjectRecovery;
}
}
}
上記は私がコードを機能させたい方法ですが、myLargeObjectとmyLargeObjectRecoveryは同じオブジェクトへの参照であるため、明らかに機能しません。
1つの解決策は、コピーコンストラクターを作成することです。これは小さなオブジェクトには問題ありませんが、大きなオブジェクトがある場合(私のプロジェクトでは、オブジェクトは大きな2D配列であるため、すべてのエントリを反復処理する必要があります)、この方法は間違っていると感じます。
これはJavaで非常に一般的な問題であるに違いありませんが、他の人はどのようにしてそれを回避しますか?