2013-05-26 42 views
-2
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); 

爲什麼我不能在這個方法中使用超級?它聲明 「構造函數調用必須是構造函數中的第一條語句」在java中使用super()的錯誤

+0

var3.method_206(this);也給我錯誤undefined – user2422262

+1

答案是在它自我的問題。 – Pragnani

+1

,因爲super構造函數調用必須是構造函數中的第一條語句。 – njzk2

回答

2

您不能在方法內使用super()。由於錯誤狀態:

構造函數調用必須是第一條語句在構造函數中

如果你想使用它,它必須是構造內部及第一線

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

您試圖從方法調用超類構造函數,這是錯誤的。 super()只能在構造函數中使用,並且必須是構造函數中的第一個語句。

+0

你爲同一個問題發佈了多少個答案 – Pragnani

+0

SO允許我這麼做;) – NINCOMPOOP

+1

但是爲什麼發佈新的答案如果你只能編輯舊的答案? – Pshemo

0

雖然這個問題是因爲錯誤消息完全是多餘的告訴你正是的問題是什麼(「構造函數調用必須在構造函數中的第一條語句」)這樣做的原因是因爲Java Language Specification section 8.8.7明確規定構造的結構:

構造體的第一個語句可以是相同的類或直接超類(§8.8.7.1)的另一個構造的顯式調用。

ConstructorBody: 
    { ExplicitConstructorInvocationopt BlockStatementsopt }