看看Linkedlist.java,我观察了重载的构造函数,其中一个包含一个空的this()。 一般来说,我已经看到了默认参数。什么是使用这个()没有参数?
/**
* Constructs an empty list.
*/
public LinkedList() {
}
/**
* Constructs a list containing the elements of the specified
* collection, in the order they are returned by the collection's
* iterator.
*
* @param c the collection whose elements are to be placed into this list
* @throws NullPointerException if the specified collection is null
*/
public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}
答案 0 :(得分:2)
这称为构造函数链接。它是一种机制,可以从最常见的超类(Object
)的构造函数开始初始化对象,然后向下移动到更具体的类(每个级别在移动之前将新对象初始化为其类的有效状态)到下一个)。
构造函数可以选择当前类的其他构造函数(由this
表示)或父类(由super
表示)在运行此类之前调用。默认链接选项是(隐式)super()
,除非指定了其他内容(或者父类中的无参数构造函数不可见)。
在您的情况下,this()
表示构造函数LinkedList(Collection<? extends E> c)
将首先调用LinkedList()
构造函数。在你的代码段中, 是一个无操作,它的存在确保了无参数构造函数的初始化策略中的任何更改也将被另一个采用。因此,它使得更改类的初始化逻辑更不容易出错。
答案 1 :(得分:0)
在Java语言中,如果公开默认构造函数以外的构造函数,则默认构造函数将消失。您可以放置显式默认构造函数。如果需要显式默认构造函数以及非默认构造函数this()
,则应将其置于构造函数中。