我最近一直在阅读许多Android项目的代码,以获得更多的理解。我看到的一件事是ArrayList实例化的两种方式的区别。
请注意此处显示的这两个示例。为什么有些人使用示例1,为什么你会在例2中做到这一点,它们之间的主要区别是什么?
我理解Java中的向上转换和向下转换的概念,并且在这种特定情况下看不到任何优势。如果你要创建一个arrayList,为什么不从头开始将它存储在一个ArrayList变量中呢?
我一直使用示例2的方式创建一个新的ArrayList。我不明白使用示例1中显示的内容有什么好处
看起来更多程序员使用示例1方式
示例1,使用向上转换为父变量
List<String> list = new ArrayList<String>();
示例2
ArrayList<String> list = new ArrayList<String>();
答案 0 :(得分:1)
List
是接口,因此无法实例化它。您必须使用ArrayList
等具体实现进行实例化。
是否完全使用List
或ArrayList
取决于使用它的上下文。
如果你想要一个ArrayList
,你应该用ArrayList实例化它,不过
上传通常是为了方法的可重用性而进行的,通常是自动完成的。
考虑使用此方法对列表进行排序
public void sort(ArrayList lst);
您只能通过此方法对ArrayList进行排序。因此,如果要对LinkedList对象进行排序,则必须使用LinkedList参数创建另一个方法
现在考虑这个方法
public void sort(List lst);
您现在可以通过传递实现List接口的类的对象来重用此方法。因此,您现在可以对ArrayList
,LinkedList
,Stack
,Vector
进行排序使用相同的方法。因此,您现在正在重复使用相同的方法来对实现List接口的不同类进行排序