在
java.util.LinkedList
类中,定义了 2 个构造函数,默认构造函数和参数化构造函数接受集合。
当我查看实现时,我发现参数化构造函数有
this()
,基本上就是调用默认构造函数。
但是默认构造函数是空的。所以我只是好奇这是否是调用默认构造函数的最佳实践,即使它是空的,或者这背后是否有任何推理。如果我们不调用默认构造函数会发生什么。
如果将来随时扩展默认构造函数,则不必更改其他构造函数。
它告诉我们,扩展构造函数基本上是默认构造函数,但添加了一些特殊功能(为了方便)。
它只是意味着初始化
LinkedList
的任何形式都必须首先执行默认初始化步骤。
您可能会觉得很奇怪,因为目前还没有默认的初始化步骤(但稍后可能会出现)。
这并不是一个公认的良好做法。也许默认构造函数在以前的版本中做了一些事情。也许开发人员认为这将是一个好主意,这样如果在默认构造函数中完成了一些额外的操作,那么它也将在另一个构造函数中完成。如果您查看 ArrayList,您会发现做出了不同的选择。
如果我们不调用默认构造函数会发生什么。
只是不调用默认构造函数。超类无参数构造函数被隐式调用。
参数化版本应该以与未参数化相同的方式创建一个列表,并调用一个方法来额外添加元素。默认构造函数为空的事实是特定于实现的。
/**
* Constructs an empty list.
*/
public LinkedList() {
}
以这种方式构建它的事实仍然存在。