【发布时间】:2014-11-07 00:46:44
【问题描述】:
在我看来,给 ArrayList 一个以数组作为参数并创建一个与传递的数组等效的 ArrayList 的构造函数是非常合乎逻辑的。
但是目前我们没有这样的构造函数。相反,我们必须使用 Arrays.asList API 将数组转换为 ArrayList。
为什么 Array 到 ArrayList 的转换被分离到 Arrays API 中?这个设计决策是否有更深入的思考?
【问题讨论】:
-
因为他们没有把它放进去。除非你得到一个作者的回答,这不太可能,你也不会得到一个权威的答案。
-
非权威答案(实际上,完全猜测):因为
ArrayList最初不是通用的?我认为在原始的前通用集合中实现这一点是不可行的。这并不能解释为什么他们后来没有添加它,只是“只是没想到”。 -
有趣的是
Arrays.asList(T... a)实际上并没有返回java.util.ArrayList它返回自己的类,也称为ArrayList(java.util.Arrays$ArrayList)。但如果我猜测他们为什么不让ArrayList类接受一个数组,是因为它可能会导致在构造函数中传递的数组的可变状态引起混淆。 -
我绝对同意这一点:不清楚是抄袭还是什么。
-
这个问题在here之前已经问过了,但可能没有你想要的答案。
标签: java collections