gpt4 book ai didi

java - LinkedHashMap 或 Map

转载 作者:行者123 更新时间:2023-12-02 03:56:44 25 4
gpt4 key购买 nike

我编写了一个 API,其中的方法采用 java.util.Map 作为参数。提供的 map 包含必须按插入顺序排序的数据。所以我特别提到了这个参数:java.util.LinkedHashMap。但我的一位同事要求我只将参数声明为 Map,并且客户端应该通过 API 的 javadoc 来了解。

我不明白为什么java.util.LinkedHashMap是一种不好的做法,为什么我应该传入接口(interface)。这不是不必要的工作吗?如果客户不注意文档,可能会导致功能错误。(我知道他们应该这样做)。

最佳答案

您的 API 对参数有两个要求:

  1. 这是一个 map
  2. 它按插入顺序迭代。

LinkedHashMap 满足这些要求,但没有任何文档或规范表明所有插入顺序映射都必须继承自 LinkedHashMap。通过指定 LinkedHashMap,您将保证该参数满足您的要求,但您也会禁止拥有按所需顺序迭代的 Map 的人使用您的 API,但碰巧使用了不同的实现。

如果有人提供一些自定义ArrayBackedHashMap怎么办?他们有一个满足您实际要求的对象(Map 和迭代顺序),但您声明为 LinkedHashMap 会阻止它工作。

一般来说,如果您希望您的代码被其他人使用(以及其余大部分时间),那么您应该尝试接受任何满足您实际要求的内容。在这种情况下,您的第二个要求并未正式与任何声明的类型相关联,这意味着您不应尝试使用类型来强制执行它。相反,请在 JavaDoc 中说明要求。

关于java - LinkedHashMap 或 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373855/

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