2

現在、私は次のようにそれを呼び出そうとしています:

class Test {
    public static void test() {
        System.out.println("hi");
    }
    public static void main(String[] args) {
        Test t = null;
        t.test();
    }
}

コードの出力はこんにちは

4

11 に答える 11

11

Test.test()ドットの前にクラス名を入れてみてください。

静的メソッドは、クラスのインスタンスではなく、クラス自体で呼び出されます。

于 2010-02-10T13:09:57.803 に答える
5

静的メソッドを呼び出すために Test をインスタンス化する必要はありません。メインは次のようになります。

public static void main(String[] args) {
    Test.test();
}
于 2010-02-10T13:12:33.903 に答える
3

静的メソッドは、クラスのインスタンスを作成する必要なく、クラス名で呼び出す必要があります。

ClassName.methodName(args);

また

methodName(args); // from other static methods of the same class.

次のようなオブジェクト参照で静的メソッドを参照することもできます

instanceName.methodName(args)

しかし、これはクラス メソッドであることが明確にならないため、お勧めできません。

だからあなたの場合:

Test.test();

また

test();

メインメソッドから行います。

于 2010-02-10T13:15:11.110 に答える
2

試す:

Test.test();
于 2010-02-10T13:12:22.453 に答える
1
for (Method m : Class.forName ("Test").getDeclaredMethods ()) {
   if (Modifier.isStatic (m.getModifiers ()) {
      m.invoke (null);
   }
}

ルルのためだけに

于 2010-02-10T13:34:07.433 に答える
1

あなたは同じクラスにいます。test()から簡単に呼び出すことができますmain()

于 2010-02-10T13:11:04.827 に答える
0

参照を使用して静的メソッドを呼び出す場合、参照は使用されないため、これは機能します。コンパイラーは、メソッドが呼び出されている式の宣言済み/静的/コンパイル時の型を調べ、その型を使用して静的メソッドを見つけます。

変数に対して静的メソッドを呼び出すことによって何も得られず、ポリモーフィック呼び出しが発生していると考える人々を混乱させる可能性があります。

于 2010-02-10T17:09:01.097 に答える
0

ところで。コードは nullpointerexception なしで正常に動作します このコードは hi を出力します

参照を使用して静的メソッドを呼び出すと、内部で何が起こるか知りたいと思っていました。

于 2010-02-10T13:25:27.917 に答える
0
class Test { 
    public static void test() { 
        System.out.println("hi"); 
    } 

    public static void main(String[] args) { 
        Test.test();
    }
}
于 2010-02-10T13:12:46.723 に答える
0

静的メソッドと静的変数の良いところは、それを使用するためにクラスのインスタンスが必要ないことです。

通常、インスタンスを作成してメソッドを呼び出します

Test myClass = new Text();
myClass.test();

ただし、静的メソッドの場合、最初の行は必要ありません。最初にクラス名を記述するだけで済みます。

Test.test();

ただし、静的メソッドでは、Test クラス内のインスタンス変数にアクセスすることはできません - それらも静的でない限り!

于 2010-02-10T13:15:41.817 に答える
0

コールしTest.test()ます。mainメソッドは静的で同じクラスにあるため、直接呼び出すこともできtest()ます。

于 2010-02-10T13:16:13.767 に答える