-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 に答える