当前位置: 首页 > 知识库问答 >
问题:

使用super()时,构造函数调用必须是构造函数中的第一条语句;

颛孙正卿
2023-03-14

这个Super()的替代品是什么;我代码中的语句...因为它向我显示了一个名为:构造函数调用必须是构造函数中的第一个语句的错误。

class c
implements android.view.View.OnClickListener
{

final b a;
private final Dialog b;

c(b b1, Dialog dialog)
 {
    a = b1;
    b = dialog;
    **super();**//Error Constructor Call must be the first statement in a constructor
 }

public void onClick(View view)
{
    b.cancel();
 }
}

共有3个答案

程英资
2023-03-14

为了方便起见,您还可以更改变量名称,如:

class C implements android.view.View.OnClickListener {

    final B a;
    private final Dialog b;

    c(B a, Dialog b) {
        super();
        this.a = a;
        this.b = b;
    }

    public void onClick(View view) {
        b.cancel();
    }
}
羊禄
2023-03-14

Super();是指扩展类构造函数,即Object...

为避免出现此类错误,请修改您的代码,使Super();应该是c类构造函数中的第一个语句。

c(b b1,Dialog dialog) 
{
    super();
    a = b1;
    b = dialog;
 }

附言您的编译器本身会为您提供答案。

裴姚石
2023-03-14

它应该是:

 c(b b1, Dialog dialog) {
    super();
    a = b1;
    b = dialog;
 }
 类似资料:
  • 如果将移到构造函数的最后一行,我不明白为什么下面的代码会显示错误。 我已经检查了很多关于StackOverflow的答案,但我仍然不能理解这其中的原因。请帮我用一些简单的例子和解释弄清楚这个错误。

  • 问题内容: 我正在编写一个LoginRequest类的构造函数,该类扩展了一个名为JsobObjectRequest的类(来自Android的Volley框架,但这与问题完全无关) 使用此代码: 我收到错误:对super()的调用必须是构造函数主体中的第一条语句 相反,此代码可以正常编译: 但这实际上不是一回事吗?在这两种情况下,根据传递给子类构造函数的参数值,在调用超级构造函数之前都要进行一些简

  • 问题内容: 以下代码向我返回错误信息: 我不明白。我的代码中的构造函数是第一条语句。我究竟做错了什么? 问题答案: 构造函数名称必须与类名称相同,因此请将类名称更改为或将构造函数名称更改为。 示例 (请注意,在Java中通常第一个字母是大写字母) :

  • 我正在编写一个LoginRequest类的构造函数,该类扩展了一个名为JsobObjectRequest的类(来自Android的凌空框架,但这与问题完全无关) 使用此代码: 我得到了一个错误:对super()的调用必须是构造函数体中的第一条语句 相反,这段代码编译得很好: 但事实上不是完全一样吗?在这两种情况下,在调用超级构造函数之前,都会根据传递给子类构造函数的参数值进行一些简单的计算。既然编

  • 我有一个班在Java延伸了另一个班 我需要构造函数来运行超级ctor 这是我的基本代码: 我想从子类中调用它 我怎么做,因为我得到错误“构造函数调用必须是构造函数中的第一个语句”,但我需要构建ctor 谢谢

  • 可能的重复: 为什么this()和super()必须是构造函数中的第一条语句? 我想要一个在Java的建筑链。例如,对于第一个构造函数,我有一个字符串作为参数,并在从参数字符串创建对象时调用第二个构造函数。 但是,我得到了一个错误“构造函数调用必须是构造函数中的第一条语句”错误。 我制作了一个在两个构造函数之间共享的公共代码,但我不确定这是绕过这个问题的唯一解决方案。 为什么Java要求构造函数调