java - 我们为什么需要 ArrayList 构造函数中的 super() 呢?

标签 java arraylist collections

此代码来自 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/

相关文章:

java - 如何使用 Maven 添加 Postgresql jdbc 驱动程序 9.2-1003-jdbc3?

java - Spring 独立应用程序 |记录

java - 如何修复 FileInputStream 仅查看最后一个条目?

java - 输出什么也没给出

java - Java TreeMap put() 方法的奇怪行为

java - 如何优雅地退出java应用程序?

Java练习: Printing asterisks Triangle and its inverted triangle using recursion method

flutter - 如何为仅限于实例的复选框小部件定义变量?

java - 双向链表实现中的 NullPointerException

java - 使用删除循环列表