java中数组的可变性

时间:2014-04-24 20:54:41

标签: java immutability mutability

如果方法从特定数组索引返回一个对象,然后修改了该对象,那么这个对象是仅在本地修改还是数组中的对象也会被修改?

有没有办法强制每个案件?

2 个答案:

答案 0 :(得分:4)

数组中的对象也将被修改。它以这种方式工作,因为尽管Java是按值传递的,但它传递了对象引用的值。所以最后数组有一个引用的副本,无论得到什么结果都有一个引用的副本。修改对象本身时,您需要修改它们所指向的对象"指向"至。所以两者都看到了变化。

使这不成立的唯一方法是在返回之前复制元素。

或者,如果您使对象不可变,则不必担心这些细节,因为您无法首先更改对象。

答案 1 :(得分:1)

如果您想要不修改对象,则需要创建defensive copy对象