1

メイン クラスで非静的メソッドを呼び出すにはどうすればよいですか。サンプル コンソール アプリケーションで次のエラーが発生します。

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - non-static method doSomthing() cannot be referenced from a static context
        at sample.Main.main(Main.java:20)

コードは、

public class Main  {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       doSomthing();
       System.out.print("From Main");
    }

    protected void doSomthing()
    {
        System.out.print("From Main doSomthing");
    }


}
4

4 に答える 4

5

問題は、Java で許可されていない静的メソッドで非静的メソッドを使用したことです。doSomthing() を静的メソッドとして変更します。

protected static void doSomthing()
{
    System.out.print("From Main doSomthing");
}

または Main クラスのオブジェクトを作成して呼び出す

 public static void main(String[] args) {
   Main myMain = new Main();
   myMain.doSomthing();
   System.out.print("From Main");
}
于 2013-01-05T16:31:04.243 に答える
2

[メインクラス]をインスタンス化しない限り、メインクラスで非静的メソッドを呼び出すことはできません。

于 2013-01-05T16:33:03.460 に答える
2
public class Main  {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Main main = new Main();
       main.doSomthing();
       System.out.print("From Main");
    }

    protected void doSomthing()
    {
        System.out.print("From Main doSomthing");
    }
}
于 2013-01-05T16:34:32.340 に答える
2

メソッドから最初にインスタンスを作成できます。static main

new Main().doSomthing();
于 2013-01-05T16:31:44.930 に答える