public class test
{
public static void main(String[] args)
{
List<Integer> list = new ArrayList<>();
list.add(1);
modifyList(list);
for(int a : list)
{
System.out.println(a); // prints "1"
}
list = new ArrayList<>();
for(int a : list)
{
System.out.println(a); // prints nothing
}
}
public static void modifyList(List<Integer> list)
{
list = new ArrayList<>();
}
}
有没有人知道为什么在调用modifyList()之后,list仍然包含元素1而不是指向一个什么都不包含的新地址?我的理解是arrayList是一个对象,因此它可以通过引用传递,它是可变的。例如,如果我在modifyList()中执行list.add(2),则同一列表中将包含2个元素。
发布于 2018-10-08 08:20:01
参数of modifyList
是原始引用的副本,这意味着它指向同一个对象,但它不是相同的引用
现在list = new ArrayList<>();
,复制引用指向一个新对象,但原始引用仍指向原始列表。
https://stackoverflow.com/questions/-100002843
复制相似问题