您的位置 首页 java

一起来聊聊Java中的ArrayList

提起ArrayList相信对于 java 开发人员来说并不会感到陌生,甚至会有种亲切感。好像每次出去面试,多多少少都会跟它扯上点关系。所以导致网上以及各大培训机构都对其源码有着丰富的解读。

但是,本篇文章并不是去解读底层源码的:“底层是用什么实现的,默认初始化容量是多大,是不是 线程 安全的,是怎么进行扩容的 ” 这些老生常谈的问题。

前段时间,本人闲来无事,本来阅读优秀框架代码,提升自己能力的思想觉悟去翻了一下其底层代码,发现了一个好玩的事。这里先卖个关子。

我们先来看一下ArrayList 的继承图:

一起来聊聊Java中的ArrayList

ArrayList 中的继承关系

不知道各位朋友有没有发现其中的端倪呢?好吧,不卖关子了。 ArrayList 的直接父类是 AbstractList ,AbstractList 的已经实现了List 这个接口,那么ArrayList 为什么还要实现List 接口呢 ? 不知道各位小伙伴们有没有过这样的疑惑?

本着阅读优秀人的代码,就是去读那个人的思想,就是去走进那个人的内心世界原则。于是,什么面向接口编程,什么高内聚,低耦合,什么开放-封闭原则,什么单一职责。能往上靠的都靠上。嗯,优秀的人,写的代码就是优秀,写得真好,设计得真完美!

在无数次的良心不安与对知识的追求下,终于找到了真相:真相就是作者写错了。

一起来聊聊Java中的ArrayList

作者承认他写错了

上面的截图中的人说,他曾经就这个问题问过 Josh Bloch ,Josh Bloch 承认说那是个错误。作者在写的时候,想着实现List 接口可能会有一些用。后来 jdk 维护者们,认为不值得为这么个美丽的错误而去修改,就没有修改它了。

好了,今天的分享就告一段落了,感谢各位听我水了这么多没用的,哈哈~

文章来源:智云一二三科技

文章标题:一起来聊聊Java中的ArrayList

文章地址:https://www.zhihuclub.com/193783.shtml

关于作者: 智云科技

热门文章

网站地图