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