【发布时间】:2014-08-18 16:44:17
【问题描述】:
在this answer 中声明您永远不应该更改您分配的参数,最好是Java 强制参数始终是最终的。我个人同意并且从不这样做。如果我想对参数进行一些更改然后再次返回它,我会在方法中创建一个本地副本,更改有关该副本的内容,然后返回该副本。
这让我想知道,我是否应该将我的 Android/Java 项目中的所有参数都设置为最终参数,或者是否存在我不想这样做的情况?
我脑海中突然出现的一些问题:
- 将
@Override方法的参数设为final 是否会有所不同? - 作为上一个问题的后续:我打电话给
super(my_final_parameter);有关系吗? - 再次跟进:使用默认 Java/Android
extends的super(my_final_parameter);,这些 Java/Android 类在幕后是否有任何情况使用该参数,所以我不能让它们最终化?李>
如果对于上述情况(或您可能想到的其他情况)而言,参数是否为 final 无关紧要,那么将方法/构造函数/重写方法的每个参数设为 final 是否是个好主意?
【问题讨论】:
-
实际上有些情况下您想更改参数。例如,如果您想“返回”多个参数,您可以发送多个参数,在方法中更改它们,然后当方法退出时,您知道变量已被“返回”/更改/更新。我知道该示例可能不是理想的代码,但我确实相信将所有参数设置为最终参数会给您带来一些令人头疼的错误。这当然取决于项目的规模和实施,但作为一个总体思路,我不会将所有这些都定为最终结果。
-
@Pphoenix 因为java是按值传递修改你的参数对你传递的变量没有影响,因此发送多个参数,在你的方法中更改它们,然后在方法退出时你知道变量已经“返回”/更改/更新是错误的。
标签: java parameters overriding final superclass