【发布时间】:2020-07-16 02:06:07
【问题描述】:
我正在尝试使用 java 中的列表,但我的代码中出现以下错误(见下文)。我创建了一个新的列表对象 L1 并将其传递给函数 f。在函数 f 中,我创建了 L1 的副本并将其命名为 L2。我在 L2 上执行添加操作并从函数返回。在我返回后,L1 的值发生了变化。怎么会这样?据我了解,L1 的范围并未扩展到函数 f,因此无法在函数 f 中更改 L1。 L2 是 L1 的副本,并且是它自己的对象,因此对它的任何更改也不应该更改 L1。谁能给我解释一下?
import java.util.List;
import java.util.ArrayList;
public class HelloWorld{
public static void main(String []args){
List<String> L1 = new ArrayList<String>();
L1.add("H");
L1.add("I");
System.out.println(L1);
f(L1);
System.out.println(L1);
}
public static void f(List<String> myList){
List<String> L2 = new ArrayList<String>();
L2 = myList;
L2.add("!");
return;
}
}
打印出来的
[H, I]
[H, I, !]
【问题讨论】:
-
你没有返回列表并将其设置为
L1