Java - 在给定示例中使用 super()

Java - use of super() in the given example

我刚开始学习 Spring 框架,我在 javatpoint.com 找到了一些教程。

我有这个代码(没什么特别的,只打印一些问题和答案):

private int id;
private String name;
private Map<Answer,User> answers;

public Question(){}
public Question(int id, String name, Map<Answer,User> answers){
    super();
    this.id = id;
    this.name = name;
    this.answers = answers;
}

我的问题是:他为什么要使用 空构造函数 和关键字 super() ?该应用程序在没有它们的情况下也能正常工作,我在这段代码中不明白它们有什么用。

P.S。 : 没有超级 class 之类的。

大多数情况下不需要空构造函数,只有当您在一些糟糕的框架(如 Hibernate 或 JPA)中使用您的 class 时,您需要空构造函数来为框架创建您的 class。 那么空的构造函数是用于框架的,非空的构造函数通常用于测试或其他用途。

在上面的例子中,我没有看到任何证据表明你使用了这样的框架,所以不需要这个空的构造函数。

至于super()根本不需要。

无参数构造函数(例如,Question())在多种情况下很有用 - 如果您将 class 用作 bean 并希望延迟初始化其成员,将其序列化通过 GWT 等。示例中没有提供任何上下文,这确实是多余的。

super() 的调用是完全多余的,如果没有指定对 super 的 [other] 调用,将隐式执行。

每个未显式扩展另一个 class 的 class 都会隐式扩展 java.lang.Object。所以 super() 只是调用 Object.

的无参数构造函数

不需要显式调用,因为编译器会为您添加它。当你想调用带有参数的 superclass 构造函数时,你只需要在构造函数中添加一个 super() 调用。

因此,无论是否添加 super() 构造函数,结果都是相同的。