0

我知道ListandMap是可以实现的接口,ArrayList并且HashMap是可以创建和使用其对象的类。

我知道这两对之间的区别。我的实际问题是,以下两个陈述之间有区别吗?

HashMap< K, V>  myMap = new HashMap<K, V>(); 
Map< K, V> myMap = new HashMap<K, V>();

如果有,那么有什么区别,我应该什么时候使用哪一个?同样,有什么区别:

ArrayList< Integer> myList = new ArrayList<Integer>();
List< Integer> myList = new ArrayList<Integer>();
4

2 回答 2

2
HashMap< K, V> myMap = new HashMap(); 

正在创建 的实例HashMap,正如您在 Java 中的任何地方看到的那样。

然而:

Map< K, V> myMap = new HashMap();

正在创建Map具有具体实现的实例,称为带接口编程。

第二种方式,即使用接口编程,为您的程序带来模块化

这里有一个很好的解释,关于有什么好处以及何时使用它:

使用 Collection 接口创建 ArrayList 对象的多态性有什么好处?

于 2013-09-14T13:25:05.893 回答
1

ArrayListList接口的具体实现。

所以不同之处在于你有具体的类引用,而另一种你有接口引用。

HashMap< K, V>  myMap = new HashMap<K, V>(); //reference of concrete class HashMap
Map< K, V>  myMap = new HashMap<K, V>(); //reference of interface Map

您应该始终尝试使用接口进行编程

注意:当您在 其他地方传递时,应使用带接口的程序,对于局部变量,您可以自由使用具体实现。Map

另一个区别是,Map一方面,您将无法调用HashMap

于 2013-09-14T13:23:34.793 回答