gpt4 book ai didi

java - 为什么枚举在 java.utils 中被转换为 ArrayList 而不是 List?

转载 作者:IT老高 更新时间:2023-10-28 11:50:55 27 4
gpt4 key购买 nike

Collections.list() 有充分的理由吗? java.utils 中的方法包返回 ArrayList<T>而不是 List<T> ?

显然是 ArrayListList ,但我的印象是返回接口(interface)类型而不是实现类型通常是一种好习惯。

最佳答案

免责声明:我不是 JDK 作者。

我同意将您的自己的代码写入接口(interface)是正确的,但是如果您要将一个可变集合返回给第三方,重要的是让第三方知道他们返回的是什么类型的 List

LinkedListArrayList 对于各种操作在性能方面非常不同。例如,删除 ArrayList 的第一个元素是 O(n),但删除 LinkedList 的第一个元素是 O (1).

通过完全指定返回类型,JDK 作者传达了额外的信息,在明确的代码中,关于他们返回给您的对象类型,因此您可以编写代码以使用这个方法得当。如果你真的需要一个LinkedList,你知道你必须在这里指定一个。

最后,在实现上编写接口(interface)的主要原因是您是否认为实现会发生变化。 JDK 作者可能认为他们永远会改变这种方法;它永远不会返回 LinkedListCollections.UnmodifiableList。但是,在大多数情况下,您可能仍然会这样做:

List<T> list = Collections.list(enumeration);

关于java - 为什么枚举在 java.utils 中被转换为 ArrayList 而不是 List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com