此代码来自 ArrayList 源:
public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
此代码来自 AbstractList 源:
protected AbstractList() {
}
super() 的作用是什么?
最佳答案
一般来说,super
将使用匹配的参数调用其父构造函数。在本例中,由于 AbstractList
有一个隐式无参数构造函数,因此我们使用不带参数的 super()
来调用隐式无参数构造函数。
至于为什么 - 如果不需要在父类中设置字段,那么在这种情况下确实没有理由这样做。这可能是一种较旧的编程风格的情况。
它没有害处,而且是 self 记录的;它是明确的,因为它调用其父级的构造函数。不过,我会注意到该构造函数的 Javadoc 指出了它的调用用途:
/**
* Sole constructor. (For invocation by subclass constructors, typically
* implicit.)
*/
您更有可能看到该构造函数的隐式调用而不是显式调用。
关于java - 我们为什么需要 ArrayList 构造函数中的 super() 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193239/