-3
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 ?它声明“构造函数调用必须是构造函数中的第一条语句”

4

3 回答 3

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

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

于 2013-05-26T15:19:55.167 回答
2

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

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

如果你想使用它,它必须在构造函数第一行

于 2013-05-26T15:19:00.430 回答
0

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

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

ConstructorBody:
    { ExplicitConstructorInvocationopt BlockStatementsopt } 
于 2013-05-26T16:18:56.527 回答