List<String> list=new ArrayList<String>();的核心是遵守了依赖倒转原则——细节依赖于抽象。
ArrayList是实现了List这个接口的,将这个问题放大来看就是一个接口引用指向了一个实现了该接口的类的对象,这就和继承中的一个父类引用指向了它的子类对象相似。
这个样子的写法的好处是确保了list只能调用在List中已经定义过的方法,而不会调用到ArrayList新创建的方法,若是写为ArrayList<String> arrayList = new ArrayList<>();则有可能调用到ArrayList<E>新创建的方法.
这个样子的写法还有一个好处:如果原本写的是ArrayList<E>但实际是要使用LinkedList<E>,那么只要把ArrayList<E>改为LinkedList<E>就可以了,后面关于list的调用的代码是不会发生错误的,但如果一开始写为ArrayList<String> arrayList = new ArrayList<>();而又需要改为使用LinkedList<E>,那么关于arrayList的调用代码可能是会出错的——可能使用到了ArrayList<E>独有的方法。这样子一来,如果一开是创建为List<String> list=new ArrayList<>();,后面即使要修改代码也会省时间一些。
原文地址:https://www.cnblogs.com/woyujiezhen/p/11456725.html
时间: 2024-10-12 02:53:22