List list1 = new ArrayList();
List list2 = list1;
list1.append("nice");
System.out.println(list2);
竟然能打印出append添加的数据
我最开始纳闷的是list1先赋值给list2,然后list1再添加数据,为啥list2还会修改?
其实这么理解是有问题的, List list2 = list1; 其实传递的是实现类,而不是接口本身。
就像是u盘连接电脑,传递的是内部的文件,而不是外部的硬件。
接口只是一种对外提供访问的方式而已。
感觉用比喻的方式来理解一些原理可以避免死记硬背。