呼び出されたメソッドに渡されたメソッド パラメータが誤って変更されないように保護したいと考えています。finalメソッドシグネチャで次のように、キーワードを使用してこれを(部分的に)達成できることを私は知っています。
public void someMethod(final int intVal, final MyClass myobj){}
上記の署名の助けを借りて、の値を変更することはできませんがintVal、の値 (メンバー) を変更することはできます (myobj変更されていない参照のみを安全に保護できますが、参照オブジェクトのメンバーは保護できません。部分的)。
myobj現在、呼び出されたメソッドで変更されて、メンバーを安全に保護しようとしていsomeMethodます。
私の知る限り、次の方法でこれを達成できました
- 不変クラスを作成し、それをパラメーターとして渡します
- オブジェクトをディープ コピーし、複製されたオブジェクトをメソッドに送信します。
メソッドのパラメーターを保護するためのより良いアプローチはありますか?