Mic*_*ael 10 java pass-by-value
假设我正在foo(int i)用Java 编写一个方法.
由于i通过值传递,因此可以安全地更改它foo.例如
void foo(int i) {
i = i + 1; // change i
...
}
在Java中更改方法的参数是否被认为是好的或坏的做法?
Raj*_*ani 15
一般来说这被认为是不好的做法,尽管有些人会忽略它,你可以在其他答案中看到.
对于通过值直接传入的基元等参数,覆盖原始变量没有任何优势.在这种情况下,您应该按照@João的建议制作副本.
对于通过值(对象)传入引用的参数,如果修改句柄以指向其他对象,则完全令人困惑.这一点更为重要,因为修改作为参数传递的对象的内容也会修改原始对象.
如果替换句柄引用的对象,然后修改其内容,则不会修改原始对象,但是读取代码的人可能会期望它.
如果您不替换对象并修改内容,则调用方法的方法可能不会期望此更改.此类别通常属于与安全相关的不良做法.
这只是个人意见,但我认为这可能会让其他人感到困惑,他们可能希望稍后在该代码中使用原始参数值,并且可能没有注意到它已经被更改。
另外,简单地创建另一个变量并为其分配修改后的值(即,int j = i + 1)很便宜。
| 归档时间: |
|
| 查看次数: |
8358 次 |
| 最近记录: |