修改传递给方法的对象的最佳做法是什么?

use*_*949 12 java

将对象传递给方法后,我想更改其中一个字段.在Java中执行此任务的最佳做法是什么?

kvi*_*sta 15

简单回答

如其他答案所述,您只需调用setter方法即可.

更哲学的答案

通常,在创建它们之外的范围内变异对象可能很危险:

http://en.wikipedia.org/wiki/Functional_programming

也就是说,有时您只想在同一个逻辑范围内封装逻辑位,您希望修改传入的对象的值.因此,我将使用的规则是,只要所有调用代码都是完整的知道这样的突变,你可以在你传递对象的方法中调用对象上的setter方法(并且你应该创建一个setter方法,如果你没有).

一般来说,如果你调用一个函数来改变你的代码库中多个位置的参数,你会发现它变得越来越容易出错,这就是函数式编程得到回报的原因.

因此,故事的寓意是:如果您的调用者完全了解此类突变,您可以更改方法中的值,但通常您应该尝试避免它,而是在其范围内更改它创建(或创建副本).