2014-04-01 36 views
1
class Perkusja { 
boolean talerze = true; 
boolean beben = true; 

void zagrajNaBebnie() { 
    System.out.println("bam, bam, baaaa-am-am"); 
} 
void zagrajNaTalerzach() { 
    System.out.println("brzdęk, brzbrzrzdęęk"); 
} 
class PerkusjaTester { 
    public static void main(String[] args) { 
     Perkusja p = new Perkusja(); 
    } 
} 

}「的主要方法不能聲明爲靜態的,靜態的方法只能在靜態或頂層類型聲明」

您好!我是新來的stackoverflow,所以請原諒我我的殘酷編輯。

我是新來的Java,我不知道究竟在哪裏的問題在於什麼是問題。 我上線 public static void main(String[]args)以下錯誤:

的方法主要不能被聲明爲靜態的;靜態方法只能在靜態或頂級類型中聲明

我正在使用eclipse,並且正在做一些簡單的java練習。我搜索了這個問題,但答案通常與更復雜的代碼相關。

我該如何解決它,以及以下錯誤的原因是什麼?我會很感激這個例子的解釋。

乾杯!

回答

6

您正在聲明您的主要方法PerkusjaTester這是一個內部類Perkusja。這是禁止的。

你應該聲明類地區以外的測試類Perkusja

注:PerkusjaTester是一個內部類,而不是一個靜態的嵌套類。這就是爲什麼PerkusjaTester不是靜態類型。正如Jon Skeet所提到的,您還可以在類PerkusjaTester上添加關鍵字static

+1

或者讓'PerkusjaTester'成爲一個靜態嵌套類,當然。這也會起作用。 –

+0

@JonSkeet編輯我的評論。謝謝。 –

+0

是的,聲明爲靜態嵌套類使您可以使用靜態方法,但也可以輕鬆地將靜態修飾符移除到方法簽名,並從外部類的構造函數中調用它。 – JohnMerlino

1

此代碼無法工作,因爲在概念上,必須在調用main之前聲明Perkusja的實例。

這是因爲內部類PerkusjaTester而不是標記爲靜態。

對您而言,最好的解決方法是編寫static class PerkusjaTester {。可以訪問main