实例化界面和具体类之间的区别? (HashMap,Map& List,ArrayList)

时间:2013-09-14 13:21:11

标签: java collections map arraylist hashmap

我知道ListMap是可以实现的接口,ArrayListHashMap是可以创建和使用其对象的类。

我知道两对之间的区别。 我的实际问题是,以下两个陈述之间是否存在差异?

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>();

先谢谢..!

2 个答案:

答案 0 :(得分:2)

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

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

在哪里

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

使用具体植入创建Map的实例,称为带接口编程。

第二种方式,即Programming with interfaces,为您的程序带来模块性

这里有一个很好的解释,关于什么是好处以及什么时候去做。

喜欢阅读:What is the benefit of polymorphism using Collection interface to create ArrayList object?

答案 1 :(得分: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的方法