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

时间:2014-01-25 09:58:13

标签: java android constructor

这个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();
 }
}

4 个答案:

答案 0 :(得分:1)

应该是:

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

答案 1 :(得分:0)

将c更改为:

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

如果你调用超类构造函数,那么在进行自己的初始化之前,你总是必须这样做。

答案 2 :(得分:0)

您还可以方便地更改变量名称,如:

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();
    }
}

答案 3 :(得分:0)

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

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

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

P.S。您的编译器本身会给您答案。