我最近遇到了一组实例化本地 map 的代码,如下所示:
HashMap<String, Object> theMap = new HashMap<String, Object>();
通常,当我看到 HashMaps 使用(并且我自己使用它们)时,局部变量只是 Map
(接口(interface)),而不是绑定(bind)到特定的实现。显然,如果 Map
可能被实例化为各种 Map
类型(例如接受参数),则这是必需的。但是,在类似上述的情况下,它是在同一点定义和实例化的,是否有仅使用接口(interface)类型的潜在原因,或者它只是样式/约定?
最佳答案
(我最初根据标题误解了这个问题,但我已经包含了类型和变量约定,因为它们都很有趣。)
重要的是它是一张 map :您可以在其中查找内容。其余的是实现细节。
我建议给它一个语义名称,例如
Map<String, Object> nameToSessionMap = ...
... 这样当您阅读代码时,您就会知道键和值的含义。
至于变量的类型 - 同样,我通常会使用接口(interface)而不是实现,部分原因是它表明我没有使用特定于该类型的任何成员。我不想强调代码中的实现,通常...这意味着当我确实关心实现时,我可以使它更明显。
关于java - Java 中本地集合的类型约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516414/