【问题标题】:Using a class or an interface as VALUE when declaring a Map声明 Map 时使用类或接口作为 VALUE
【发布时间】:2017-08-23 12:49:53
【问题描述】:

我正在清理代码,但我发现了一些让我怀疑的东西。

我有这个:

Map<String, ArrayList<?>> credentials = (LinkedHashMap<String, ArrayList<?>>) [...]

这是正确的吗?我应该重构为:

Map<String, List<?>> credentials = (LinkedHashMap<String, List<?>>) [...]

非常感谢您。

塞尔吉奥

【问题讨论】:

  • 这几乎不取决于您打算用该地图的值做什么......
  • 如果您想在具有不同“List”实现的多个上下文中将其作为通用接口重用,那么“List”接口是最佳选择,对于单一范围使用,您可以使用ArrayList,这使您的代码更具体的实现。

标签: java class interface


【解决方案1】:

List 是所有列表类型的基本接口,ArrayList 和 LinkedList 类是 List 的两个常见实现。可以保留为“ArrayList”,是List接口的具体实现

Map<String, ArrayList<?>> credentials = (LinkedHashMap<String, ArrayList<?>>) [...]

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2019-03-11
    • 2013-11-13
    相关资源
    最近更新 更多