从大多数相关帖子到目前为止,我已经理解分配给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)?
或
是否与列表对象保持一致?
感谢您提前回复..
答案 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中调用它的实现)。