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

问题描述 投票:0回答:4

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

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

GrepCode LinkedList 实现.

java data-structures constructor linked-list default-constructor
4个回答
2
投票

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

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


2
投票

它只是意味着初始化

LinkedList
的任何形式都必须首先执行默认初始化步骤。

您可能会觉得很奇怪,因为目前还没有默认的初始化步骤(但稍后可能会出现)。


2
投票

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

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

只是不调用默认构造函数。超类无参数构造函数被隐式调用。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.