关于java:构造函数调用错误消息

Constructor call error message

本问题已经有最佳答案,请猛点这里访问。

我知道我为什么会看到这节课的以下信息吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package org.swx.nursing.tools.sqlfinder.gui;

import javax.swing.JPanel;
import java.awt.event.ActionListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public final class GuiTemplateImpl  extends JPanel implements ActionListener {

    public void createAndShowGUI(GuiTemplateCriteria guiCriteria) {
        super(new BorderLayout());


    }
}

消息

1
2
Description Resource    Path    Location    Type
Constructor call must be the first statement in a constructor   GuiTemplateImpl.java    /sqlfinder/src/main/java/org/swx/nursing/tools/sqlfinder/gui    line 29 Java Problem

我不知道这为什么行不通。当我删除super()时,错误会消失,所以这似乎导致了一些问题。


super允许您调用基构造函数或基方法。目前还不清楚你到底想达到什么目标:

  • 如果试图创建构造函数,则其名称必须与类型名称匹配。它是唯一可以使用super(...)调用基构造函数的地方,并且正如错误消息所说,它必须是第一条语句:

代码:

1
2
3
public GuiTemplateImpl(GuiTemplateCriteria guiCriteria) {
    super(new BorderLayout());
}
  • 如果试图创建将调用基实现的方法:

代码(可能不是基于参数不匹配而查找的内容):

1
2
3
public GuiTemplateImpl(GuiTemplateCriteria guiCriteria) {
    super.GuiTemplateImpl(new BorderLayout());
}


super()必须存在于构造函数中,而不是方法中。像:

1
2
3
4
5
public final class GuiTemplateImpl  extends JPanel implements ActionListener {
    public GuiTemplateImpl(GuiTemplateCriteria guiCriteria) {
        super(new BorderLayout());
    }
}