ArrayList对象分配给LIst Object内部工作

时间:2015-09-29 09:36:19

标签: java list arraylist

从大多数相关帖子到目前为止,我已经理解分配给List的ArrayList和分配给ArrayList的ArrayList

之间的使用差异
   ArrayList<String> arrName =  new ArrayList<String>();
   List<String>      arrName =  new ArrayList<String>();

事实上,首选方法是"Programming to Interface"

   List<String>      arrName =  new ArrayList<String>();

但我的问题是

  • List对象是否被视为/成为ArrayList对象(已分配了一个ArrayList obj)?

  • 是否与列表对象保持一致?

感谢您提前回复..

3 个答案:

答案 0 :(得分:1)

列表永远不会成为一个类,它是一个接口。

   List<String>      arrName =  new ArrayList<String>();

在上述情况中,List持有对其类型的已实现类ArrayList的引用,其名称为arrName

答案 1 :(得分:1)

参考文献就像眼镜。如果你戴绿色眼镜,世界看起来很绿,如果你戴蓝色眼镜,世界看起来是蓝色的。 世界保持不变。只有你看到它如何变化

同样,如果您有一个ArrayList实例及其引用,如果您想调用List中仅由ArrayList覆盖的方法,然后使用:List<T> x = new ArrayList<>()

*如果您只想调用ArrayList的方法,请使用ArrayList<T> = new ArrayList<>

应该使用第二种方法,因为总是调用正确类型的List 的正确方法。您可以通过编码将任何List实例传递给参考。

答案 2 :(得分:0)

  

List对象是否被视为/成为ArrayList对象(分配了一个ArrayList obj)?

List arrName是指向其已实现的类ArrayList的对象的引用。

  

它是否与列表对象保持一致?

List是一个接口,因此您无法声明List对象。它仍将是ArrayList的对象。只是要指出,因为引用是List,所以你只能调用List接口中声明的方法(它将在ArrayList中调用它的实现)。