9
返回ImmutableMap还是Map更好?
假设我正在写一个应该返回Map的方法。例如: public Map<String, Integer> foo() { return new HashMap<String, Integer>(); } 考虑了一段时间后,我决定创建该地图后就没有理由对其进行修改。因此,我想返回一个ImmutableMap。 public Map<String, Integer> foo() { return ImmutableMap.of(); } 我应该将返回类型保留为通用Map,还是应该指定要返回ImmutableMap? 从一方面来说,这正是创建接口的原因。隐藏实施细节。 另一方面,如果我这样保留它,其他开发人员可能会错过这个对象是不可变的事实。因此,我不会实现不可变对象的主要目标。通过最小化可以更改的对象数量来使代码更清晰。更糟糕的是,过了一会儿,有人可能会尝试更改此对象,这将导致运行时错误(编译器不会对此发出警告)。