2012-02-14 50 views
2

我在大約一年的時間裏第一次與Eclipse(以及一般的java)搞混了。在我忘記的東西如下:Java和main()

我有一個函數(void callvote(),我希望將被我的主要功能(即自動,在程序中相對較早)激活。它與主函數本身在相同的類(主體)中
我嘗試用callvote();調用它,並得到一個錯誤,「 - 不能從類型主體」 「對非靜態方法callvote()進行靜態引用我的函數callvote目前位於主空間下面,簡單地說:

public void callvote() { } 我是否犯了一個可怕的罪惡,把更多的函數放在同一個類中在? 這是一個相對容易的修復,我錯過了? 這個錯誤是什麼意思? 我是否用這段代碼喚醒了Azatoth? 由於提前, 托爾莫斯

回答

0

試試這個:

public class Main { 
    public static void main(String[] args) { 
     new Main().callvote()  
    } 
} 

Java程序的main()切入點是靜態的。您不能從靜態方法調用非靜態方法。

所以你必須首先instanciate你的類和調用後的方法。

1

如果沒有static修飾符callvote是隱含的實例方法 - 您需要一個類的實例來調用它。

你可以把它標記爲亦靜:

public static void callvote() ... 

或創建聲明類的一個實例:

MyClass instance = new MyClass(); 
instance.callvote(); 
1

的main()是一個靜態方法,這意味着你可以直接從調用它一個類,而非靜態成員只能從一個對象中調用。爲了讓你打電話給你需要先實例化類的一個對象callvote()方法:)

public static void main(String [ ] args) { 
    MyClass myObject = new MyClass(); 
    myObject.callvote(); 
} 

的另一種方式,以避免錯誤是讓你callvote(法靜爲好,但它通常是不是你想做什麼(但它取決於你的班級和方法的性質)。

這篇文章描述了一些與靜態方法的過度使用的危害:Class with single method -- best approach?

相關問題