废话不多说,上面的代码longList.add(1L);长列表.add(2L);longList.add(3L);longList.add(4L);longList.forEach(System.out::println);System.out.println("--------------------------------");ListlongList2=Arrays.asList(1L,2L,3L);longList2.add(4L);longList2.forEach(System.out::println);}}运行后,你会看到如下结果,感觉瞬间窒息。有没有,不敢相信自己的眼睛,赶紧跑一遍,结果还是一样,如下。不过,怒就是怒,也得化解,且看一下。我们知道longList是我们自己定义的一个java.util.ArrayList。如果我们查看java.util.ArrayList的部分结构,我们会发现它实际上重写了add方法。那么调用add方法添加元素就没有错了,你可以随心所欲地玩。那么我们来看看Arrays.asList到底发生了什么。我们进入方法来看实现,看到返回的是一个ArrayList。是不是觉得没什么不对,然后又着急了。我想如果我在你面前,你会有这种表情。别急,别急,重点来了。来来来,看评论,为什么说返回的产品是一个列表外观的数组,那就进去看看吧。进来之后感觉怪怪的。你分不清错在哪里。你觉得这个包太平庸了。哇~~~,突然想起来,好像我们经常用java.util.ArrayList,这个产品其实就是java.util.Arrays.ArrayList,所以我明白为什么作者说这个产品是“披着外衣的外婆狼”披着羊皮”,呃,不对,是“披着列表外套的阵列”。那么我们来看看这个产品的结构。不用找了,我就不给你截图了,方法还是很多的,而且截图有点费力。但是你肯定找不到add方法。那你就“顿悟”了,哦,原来这家伙根本不让我加元素。聪明如你,以后遇到这种情况就知道该怎么办了。因为你看到的白羊不一定是真正的白羊,而可能只是披着白羊皮的狼奶奶。