最近回顾 java 集合,发现大部分程序中都在使用 List list = new ArrayList(); 也有部分程序使用 ArrayList list = new ArrayList(); 那么他们两个有什么差别呢?
首先,List 集合代表一个 元素有序、可重复的集合,List 是 Collection 的接口的子接口;而 ArrayList 是一个类,还实现 Lits 接口。
Lits list = new ArrayList(); 这一句创建了 ArrayList 的对象后向上转型到了 List。此时他是一个 List 对象了,这个对象就不能使用 ArrayList 有但是 List 没有的属性和方法。而 ArrayList list = new ArrayList(); 这一句创建的对象则保留了所有 ArrayList 的所有属性和方法。
那么为什么大多数时候都在使用 List list = new ArrayList(); 呢?问题就在于,List 有多个实现类,如 LinkedList、vector 等,现在你用的是 ArrayList,也许哪一天你需要更换为其他的实现类,这是只需要改变一行代码就可以:List list = new LinkedList(); 其他使用了 list 的地方就不用动了,假设你开始用的是 ArrayList list = new ArrayList(); 那么要改的地方及很多了,尤其是使用了 ArrayList 特有的方法和属性。如果没有特别需求的话,最好使用 List list = new ArrayList(); 便于程序代码重构。这就是面向接口编程的好处。