2012-02-14 7 views
2

私は約1年で初めてEclipse(とjava一般)を使いこなしています。Javaとmain()

私は私の主な機能(すなわち、プログラムの比較的早い段階で)によって活性化されることを望んでいる機能(void callvote()を持っています。
callvote();で呼び出すと、「型本体から非静的メソッドcallvote()への静的参照を作成できません」 エラーが発生しました。私の関数callvoteは、メインの下の空間には、現時点では、あると単純に

public void callvote() { } は言う私は、MAと同じクラスに複数の関数を置くことによって恐ろしい罪を犯していますに? これは私が何とか逃した比較的簡単な修正ですか? このエラーは何を意味しますか? 私はこのコードでAzatothを起こしましたか?事前に おかげで、 Tormos

答えて

0

はこれを試してください:あなたのJavaプログラムの

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

main()エントリポイントは静的です。静的メソッドから非静的メソッドを呼び出すことはできません。

したがって、クラスを最初にインスタンス化してからメソッドを呼び出す必要があります。

1

static修飾子を使用しない場合は、callvoteは暗黙的にインスタンスメソッドです。このメソッドを呼び出すには、クラスのインスタンスが必要です。

public static void callvote() ... 

するか、宣言するクラスのインスタンスを作成します:

また、それが静的にマークでき

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

()静的メソッドは、あなたから直接呼び出すことができることを意味し、主クラスではなく、非静的メンバーはオブジェクトからのみ呼び出すことができます。あなたが最初にあなたのクラスのオブジェクトをインスタンス化する必要がcallvote()メソッドを呼び出すようにするために:

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

をエラーを回避する別の方法は、あなたにも()メソッド静的をcallvoteようにすることですが、それは通常ですあなたがしたいことではありません(ただし、クラスとメソッドの性質によって異なります)。

この投稿では、静的メソッドの過剰使用によるいくつかの危険性について説明しています。Class with single method -- best approach?

関連する問題