List的引用不会被重置

The*_*ser 2 java

我创建了一个List并添加了2个元素.我将此List传递给方法并将列表初始化为new ArrayList().

当方法返回时,我打印列表的大小,但它仍然显示2.

public class ValueChange {
    public void fun(List<Integer> l1){
        l1=new ArrayList<Integer>();
    }

    public static void main(String[] args){
        List<Integer> l1=new ArrayList<Integer>();
        l1.add(5);
        l1.add(6);
        System.out.println("Before = "+l1.size());
        ValueChange vc=new ValueChange();
        vc.fun(l1);
        System.out.println("After = "+l1.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

ben*_*n.d 7

这条线:

l1=new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

在您的fun方法中,实际上不会更改此方法范围之外的列表.您可以更改其中的值,但不能将新列表重新分配给参数.

这实际上是java中的常见错误.如果您想知道如何在方法中传递参数,请阅读这篇文章.