private List allBg=new ArrayList<>();
上面这条语句,它定义了allBg这个List接口类型的变量,并新建一个实现类ArrayList的对象赋给这个变量。那为什么不直接写成这样:private ArrayList allBg=new ArrayList<>()?
第一种写法是有什么用意或者好处,为什么我看很多范例都会这么写,而不是直接写第二种?明明第二种也是一样正确,而且更容易理解。还是只是一个大家约定俗成的习惯,没有什么理由?
先了解多态;List有多个实现类,ArrayList是查询快,增删慢,如果我想增删快改成用LinkedList怎么办,如果之前用了ArrayList的特有方法,变成LinkedList后ArrayList的特有方法就不行了,这就有的改了,这就是多态的一个好处,无论后边怎么样,我用的都是前边的方法
多态优点:
List是ArrayList的父类,子类可以继承父类的属性和方法,一般都是这样用。
都可以的,硬要说的话就是性能有差距,但其实不大吧。
还有就是为了以后代码维护考虑吧
比如这样
private ArrayList allBg=new ArrayList<>();
public ArrayList getAllBg() {
return allBg;
}
public void setAllBg(ArrayList allBg) {
this.allBg = allBg;
}
如果未来不准备用ArrayList,更换LinkedList
方法和属性都要改
而如果用List,值需要修改成new LinkedList() 就行了
private List allBg= new ArrayList<>();
public List getAllBg() {
return allBg;
}
public void setAllBg(List allBg) {
this.allBg = allBg;
}