我最近阅读了许多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>();
List
是一个接口,因此无法实例化它。您必须用它的具体实现(如ArrayList
)进行实例化。
使用List
还是ArrayList
完全取决于使用它的上下文。。
如果你想要一个ArrayList
,你应该通过用ArrayList实例化它
Upcasting通常是为了方法的可重用性而执行的,并且通常是自动执行的。。
考虑这种排序列表的方法
public void sort(ArrayList lst);
只能通过此方法对ArrayList进行排序。因此,如果你想对LinkedList对象进行排序,你必须创建另一个带有LinkedList参数的方法
现在考虑这个方法
public void sort(List lst);
现在,您可以通过传递实现List接口的类的对象来重用此方法。。因此,现在可以使用相同的方法对ArrayList
、LinkedList
、Stack
、Vector
进行排序。。因此,您现在可以重用这个相同的方法来对实现List接口的不同类进行排序