我想保护传递给被调用方法的方法参数不被意外更改。我知道我们可以final
在方法签名中使用关键字来实现这一点(部分),如下所示。
public void someMethod(final int intVal, final MyClass myobj){}
在上述签名的帮助下,我无法更改 的值intVal
,但是我可以更改 的值(成员)myobj
(我只能保护未更改的引用,但不能保护引用对象的成员,这就是我说的原因部分的)。
现在我也希望保护我的myobj
成员,在被调用的方法中进行更改someMethod
。
据我所知,我可以通过以下方式实现这一目标
- 创建一个不可变类并将其作为参数传递
- 深拷贝对象并将克隆的对象发送给方法。
有没有更好的方法来保护方法参数?