疑惑来源
如下代码,可以看到在LinkedList的一个含参构造函数中调用了this(),这里的调用this()相当于调用默认无参构造函数LinkedList()
//默认构造函数
public LinkedList() {
}
//通过一个集合初始化LinkedList,元素顺序有这个集合的迭代器返回顺序决定
public LinkedList(Collection<? extends E> c) {
this();//这里的this()到底有什么作用
addAll(c);
}
疑惑内容
然而无参构造函数中什么也没做,那为什么还要这么调用呢?这样做有什么好处?
解析
- 好处1:减少编译器添加super()方法的数量,这算好处么?
众所周知,如果不在子类的构造函数中显示调用父类的构造函数【即:super()方法】,那么编译器会自动给子类构造函数添加super()方法,通过this()的调用,这样就只用给默认构造函数LinkedList()添加super()方法了 - 好处2:好处1都很牵强。。。求大神分析分析这么用到底有好处没有。










网友评论