Java 创建Hashmap的对象并将其分配给map引用。为什么?
为什么我们用 Map abc=新HashMap(20) 而不是 HashMap abc=新的HashMap(20) 请帮我找出这两者的区别Java 创建Hashmap的对象并将其分配给map引用。为什么?,java,Java,为什么我们用 Map abc=新HashMap(20) 而不是 HashMap abc=新的HashMap(20) 请帮我找出这两者的区别 非常感谢您的帮助。在第一种情况下,abc变量的类型为HashMap,它是Map接口的实现。例如,如果您以后改变主意并想使用TreeMap,您将不得不在代码中更改对HashMap的许多引用,并且可能在通用Map操作足够的情况下使用了HashMap的特性 如果使用Map接口作为变量的类型,则可以轻松更改实现。 当您为重用而设计类时,这一点很重要。如果您有一个将M
非常感谢您的帮助。在第一种情况下,
abc
变量的类型为HashMap
,它是Map
接口的实现。例如,如果您以后改变主意并想使用TreeMap
,您将不得不在代码中更改对HashMap
的许多引用,并且可能在通用Map
操作足够的情况下使用了HashMap
的特性
如果使用Map
接口作为变量的类型,则可以轻松更改实现。
当您为重用而设计类时,这一点很重要。如果您有一个将
Map
作为参数的方法,那么任何Map
实现都可以用来调用您的方法。因此,调用者可以自由地使用最合适的实现。这在某种程度上是Java
中的代码设计模式,只要可能,您就可以使用super
类型引用。同样的情况下,您应该避免使用原始类型,并尽可能多地使用泛型类型HashMap
或Map
,这将更具可读性,并且两种类型都是安全的。可能的重复您可能也要检查此答案:是否还有其他用途?一般来说,我们可以随时根据需要更改参考号。我同意。问题应该是“为什么我应该使用HashMap
而不是Map
”。您应该始终在对象Hirrchy中使用尽可能高的类型,并且有一个很好的理由说明为什么不在Hirrchy中向上一级,而不是相反。