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