以下哪项是正确的:
Map<K,V> map = new HashMap<>();
或
HashMap<K,V> map = new HashMap<>();
甚至:
List<T> list = new ArrayList<>();
ArrayList<T> list = new ArrayList();
我很好奇是否有正确的方法,或者只是一个偏好的问题。我想知道这可能是愚蠢的,但我只是不确定。
答案 0 :(得分:1)
做类似
的好处Map map = new HashMap<>();
您的代码不依赖于HashMap
的实现及其API。
如果您以后决定将HashMap
替换为Map
接口的另一个实现,例如EnumMap
,则代码中唯一可以更改的部分就是该行。
Map map = new EnumMap<>();
如果你做了类似
的事情HashMap map = new HashMap<>();
然后决定从HashMap
更改为EnumMap
,您必须:
1)遍历您的所有代码并将HashMap
的每个实例更改为EnumMap
。
2)如果您依赖于HashMap
而非EnumMap
中存在的功能,请完全重新设计代码。也就是说,如果您依赖于Map
不支持的API,则无需对代码进行其他修改即可轻松地从一种类型更改为另一种类型。
答案 1 :(得分:0)
如果可能的话(除非您为某个集合的特定实现或其他东西编写一些实用程序代码),您想使用该接口,即
List<String> list = new ArrayList<>();
这样,如果需要出现这种需求,切换实现会更容易,例如转移到LinkedList。