Java中接口和实现类的使用之间的区别

时间:2010-07-31 09:35:10

标签: java class interface

  

可能重复:
  Type List vs type ArrayList in Java

为什么建议这样做:

List<String> myArrayList = new ArrayList<String>

或与Map接口和HashMap类相同

而不是:

ArrayList<String> myArrayList = new ArrayList<String>

3 个答案:

答案 0 :(得分:3)

因为myArrayList变量的消费代码不会绑定到此接口的特定实现。

答案 1 :(得分:1)

使用第一个(首选)行,您的代码需要一个List,第二行您说您的代码需要一个ArrayList。通常,您可以路径变量实例。如果您现在因某种原因更改myArrayList实例,则必须更改太多代码。

答案 2 :(得分:1)

你不应该使用:

List<String> myArrayList = new ArrayList<String>

为什么你应该使用List类型而不是ArrayList(除非你真的需要List接口中缺少的ArrayList的功能)已在另一个答案中解释。

但我认为使用专有名词更为重要。因此,如果您使用List作为变量的类型,则名称不应该告诉它是ArrayList。如果名称表明使用了变量,那就更好了。

是的,这很挑剔。但是,使用好名字可以让你在一年之后和同事们更容易理解代码。