如果方法从特定数组索引返回一个对象,然后修改了该对象,那么这个对象是仅在本地修改还是数组中的对象也会被修改?
有没有办法强制每个案件?
答案 0 :(得分:4)
数组中的对象也将被修改。它以这种方式工作,因为尽管Java是按值传递的,但它传递了对象引用的值。所以最后数组有一个引用的副本,无论得到什么结果都有一个引用的副本。修改对象本身时,您需要修改它们所指向的对象"指向"至。所以两者都看到了变化。
使这不成立的唯一方法是在返回之前复制元素。
或者,如果您使对象不可变,则不必担心这些细节,因为您无法首先更改对象。
答案 1 :(得分:1)
如果您想要不修改对象,则需要创建defensive copy对象