如果java是“仅按值传递”,那么为什么在此处更改列表中的值
我也尝试了Object
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(15);
list.add(45);
addExternally(list);
ListIterator<Integer>
iterator = list.listIterator();
while(iterator.hasNext()) {
System.out.println("Value is : "
+ iterator.next());
}
}
private static void addExternally(List<Integer> list) {
list.add(11);
list.add(12);
}
它不应采用addExternally方法的更改,而应采用其原因
答案 0 :(得分:2)
这是因为传递给该方法的引用实际上引用的对象与您的main方法中引用的对象相同。
更多信息:https://stackoverflow.com/a/4893009/6671004
如果要对列表进行临时更改,可以使用:
List<Integer> tempList = new ArrayList<Object>(list);
或使用
List<Integer> tempList = (ArrayList<Integer>) list.clone();