LinkedList数据结构,为什么我们需要从不同的构造函数中调用空的默认构造函数

时间:2015-08-02 18:53:06

标签: java data-structures constructor linked-list default-constructor

java.util.LinkedList类中,定义了2个构造函数,默认和参数化接受集合。当我查看实现时,我发现参数化构造函数有this(),基本上是调用默认构造函数。

但默认构造函数为空。所以我很好奇如果这是调用默认构造函数的最佳实践,即使它是空的,或者是否有任何推理。如果我们不调用默认构造函数会发生什么。

GrepCode LinkedList implementation

4 个答案:

答案 0 :(得分:2)

如果将来随时扩展默认构造函数,则不必更改其他构造函数。

它告诉我们,扩展构造函数基本上是默认构造函数,但有一些特殊功能(为方便起见)。

答案 1 :(得分:2)

它只是意味着LinkedList初始化的任何形式必须首先执行默认初始化步骤。

你可能看起来很奇怪,因为现在没有默认的初始化步骤(但可能会在以后出现)。

答案 2 :(得分:2)

这不是一个公认的良好做法。也许默认构造函数在以前的版本中做了一些事情。也许开发人员认为这是一个好主意,所以如果在默认构造函数中做了一些额外的操作,它也将在另一个中完成。如果你看一下ArrayList,你会看到做出了不同的选择。

  

如果我们不调用默认构造函数会发生什么。

不会调用默认构造函数。超类no-arg构造函数被隐含地调用。

答案 3 :(得分:1)

参数化版本应该以与未参数化相同的方式创建列表,并调用方法以另外添加元素。默认构造函数为空的事实是特定于实现的。

/**
 * Constructs an empty list.
 */
public LinkedList() {
}

它打算以这种方式构建它的事实仍然存在。