返回getter中的浅表副本以及getter的一般工作方式

时间:2019-03-31 05:05:37

标签: java list arraylist getter-setter shallow-copy

我不确定如何在吸气剂中创建浅表副本,以及如何使我们受益。

它仍然可以用作普通的吸气剂吗,因为只要我调用吸气剂方法,就可以检索该列表中的信息?

我为此担心,因为将来如果我打电话 my name is omar living in whatever g i j string [] l = lines.split('\n'); for(int i = 0; i < l.length; i++) { string [] oneLine= l[i].split(' '); //and put the rest of the code here } 它们会导致麻烦的不同输出。


我想这里有一个隐含的问题,

我已经考虑了一段时间了:
如下例所示,有些人会打电话给this.strings以获取该列表中的信息(因为在这种情况下,它是私有的,所以我想它可以正常工作吗?),而其他人则继续打电话给{{1 }}或this.getStrings()
我是Java的初学者,因此所有这些似乎都能实现相同的结果,这使我感到困惑。

有人可以解释吗?很抱歉,如果措词不清楚。





下面提供了代码:

strings

某些程序员未实现:

this.strings

相反,他们这样做:

this.getStrings

1 个答案:

答案 0 :(得分:0)

第一个代码返回strings的浅表副本。返回的参考与ArrayList中存储的参考指向strings的同一对象。通过它们两者所做的更改将影响同一对象。

第二个代码创建一个ArrayList的新对象,并返回指向它的引用。新对象与字符串中的List具有相同的元素。

  

ArrayList(Collection c)   构造一个包含指定集合元素的列表,其顺序由集合的迭代器返回。

创建了一个新对象,因此返回的List中的更改不会影响List中的strings