在java中使用super()时出错

时间:2013-05-26 15:17:46

标签: java android

public class DriveActivity extends Activity {
    void method_195(DriveActivity var1) {
        this.this$0 = var1;
        super();
     }

    void method_206(DriveActivity var1) {
        this.this$0 = var1;
        super();
     }

     public void onClick(View var1) {
        if(TimerService.modeNum < TimerService.modeCount) {
           ++TimerService.modeNum;
        } else {
           TimerService.modeNum = 1;
        }

        DriveActivity.access$11(this.this$0).setText(Integer.toString(TimerService.modeNum));
        this.this$0.drive_stop();
        DriveActivity.access$12(this.this$0);
     }
  };
  var3.method_206(this);

为什么我不能在这个方法中使用super?它表示 “构造函数调用必须是构造函数中的第一个语句”

3 个答案:

答案 0 :(得分:3)

void method_206(DriveActivity var1) {
    this.this$0 = var1;
    super();
 }

你试图从一个方法调用超类构造函数,这是错误的。super()只能在构造函数中使用,它必须是构造函数中的第一个语句。

答案 1 :(得分:2)

您不能在方法中使用super()。正如错误所述:

  

构造函数调用必须是构造函数中的第一个语句

如果您想使用它,则必须在构造函数内,并且第一行

答案 2 :(得分:0)

虽然这个问题完全是多余的,因为错误消息告诉你完全问题是什么(“构造函数调用必须是构造函数中的第一个语句”)原因是因为Java Language Specification section 8.8.7显式定义了构造函数的结构:

  

构造函数体的第一个语句可能是对同一个类或直接超类(§8.8.7.1)的另一个构造函数的显式调用。

ConstructorBody:
    { ExplicitConstructorInvocationopt BlockStatementsopt }