为什么我们使用,
映射abc = new HashMap(20);
而不是
HashMap abc = new HashMap(20);
请帮助我找出这两者之间的差异。
非常感谢您的帮助。
答案 0 :(得分:5)
在第一种情况下,abc
变量的类型为HashMap
,它是Map
接口的实现。如果您稍后改变主意并希望使用TreeMap
,则必须在代码中更改对HashMap
的许多引用,并且您可能使用了HashMap
的特性通用Map
操作就足够了。
如果使用Map
接口作为变量的类型,则可以轻松更改实现。
设计类以供重用时,这很重要。如果您有一个以Map
为参数的方法,则任何Map
实现都可用于调用您的方法。因此,调用者可以自由使用最合适的实现。