创建Hashmap的对象并将其分配给地图引用.为什么?

Vic*_*cky 2 java

我们为什么用,

映射abc = new HashMap(20);

代替

HashMap abc = new HashMap(20);

请帮助我找出这两者之间的差异.

将不胜感激.

ton*_*nio 5

在第一种情况下,abc变量是类型HashMap,它是Map接口的实现.如果您稍后改变主意并希望使用TreeMap例如,则必须HashMap在代码中更改许多引用,并且您可能使用HashMap了通用Map操作足够的特性.

如果将Map接口用作变量的类型,则可以轻松更改实现.设计类以供重用时,这很重要.如果您有一个带有Mapas参数的方法,则任何Map实现都可用于调用您的方法.因此,调用者可以自由地使用最合适的实现.