gpt4 book ai didi

java - 返回 ImmutableMap 还是 Map 更好?

转载 作者:IT老高 更新时间:2023-10-28 11:35:52 29 4
gpt4 key购买 nike

假设我正在编写一个应该返回 Map 的方法.例如:

public Map<String, Integer> foo() {
return new HashMap<String, Integer>();
}

考虑了一会儿,我决定一旦创建了这个 map 就没有理由修改它。因此,我想返回 ImmutableMap .

public Map<String, Integer> foo() {
return ImmutableMap.of();
}

我应该将返回类型保留为通用 Map,还是应该指定返回 ImmutableMap ?

从一方面来看,这正是创建接口(interface)的原因;隐藏实现细节。
另一方面,如果我这样保留它,其他开发人员可能会错过这个对象是不可变的这一事实。因此,我不会实现不可变对象(immutable对象)的主要目标。通过最小化可以更改的对象的数量来使代码更清晰。更糟糕的是,一段时间后,有人可能会尝试更改此对象,这将导致运行时错误(编译器不会对此发出警告)。

最佳答案

  • 如果你正在编写一个面向公众的 API,并且不可变性是你设计的一个重要方面,我肯定会明确地通过方法名称明确表示返回的映射将是不可变的,或者通过返回 map 的具体类型。在我看来,在 javadoc 中提及它是不够的。

    由于您显然使用的是 Guava 实现,因此我查看了文档,它是一个抽象类,因此它确实为您提供了一些实际的具体类型的灵 active 。

  • 如果您正在编写一个内部工具/库,那么只返回一个普通的 Map 会更容易接受。人们将了解他们正在调用的代码的内部结构,或者至少可以轻松访问它。

我的结论是明确是好的,不要让事情碰运气。

关于java - 返回 ImmutableMap 还是 Map 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38087900/

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