下面方法,执行foo1,结果会是什么?
private void foo1() { List<String> list =new ArrayList<>(); foo2(list); System.out.println("---outside="+list); } private void foo2(List<String> list) { list = Arrays.asList("123", "dsf"); System.out.println("---internal="+list); }
结果如下。 调用foo2之后,list的值依然是空集合。
---internal=[123, dsf]
---outside=[]
你是不是以为list应该是[123,dsf]呢? 那就错了。
来看看IDE中这个foo2,list参数是灰色。并且,IDE还提示你,这种情况可以把list作为局部变量。
根据IDE提示 重构后→ |
这是java的一个基础知识点。 当List作为方法入参时,你在方法里可以改变List中的元素,包括增减元素,但是不能给List对象重新赋值。