現在、私は次のようにそれを呼び出そうとしています:
class Test {
public static void test() {
System.out.println("hi");
}
public static void main(String[] args) {
Test t = null;
t.test();
}
}
コードの出力はこんにちは
現在、私は次のようにそれを呼び出そうとしています:
class Test {
public static void test() {
System.out.println("hi");
}
public static void main(String[] args) {
Test t = null;
t.test();
}
}
コードの出力はこんにちは
Test.test()
ドットの前にクラス名を入れてみてください。
静的メソッドは、クラスのインスタンスではなく、クラス自体で呼び出されます。
静的メソッドを呼び出すために Test をインスタンス化する必要はありません。メインは次のようになります。
public static void main(String[] args) {
Test.test();
}
静的メソッドは、クラスのインスタンスを作成する必要なく、クラス名で呼び出す必要があります。
ClassName.methodName(args);
また
methodName(args); // from other static methods of the same class.
次のようなオブジェクト参照で静的メソッドを参照することもできます
instanceName.methodName(args)
しかし、これはクラス メソッドであることが明確にならないため、お勧めできません。
だからあなたの場合:
Test.test();
また
test();
メインメソッドから行います。
試す:
Test.test();
for (Method m : Class.forName ("Test").getDeclaredMethods ()) {
if (Modifier.isStatic (m.getModifiers ()) {
m.invoke (null);
}
}
ルルのためだけに
あなたは同じクラスにいます。test()
から簡単に呼び出すことができますmain()
。
参照を使用して静的メソッドを呼び出す場合、参照は使用されないため、これは機能します。コンパイラーは、メソッドが呼び出されている式の宣言済み/静的/コンパイル時の型を調べ、その型を使用して静的メソッドを見つけます。
変数に対して静的メソッドを呼び出すことによって何も得られず、ポリモーフィック呼び出しが発生していると考える人々を混乱させる可能性があります。
ところで。コードは nullpointerexception なしで正常に動作します このコードは hi を出力します
参照を使用して静的メソッドを呼び出すと、内部で何が起こるか知りたいと思っていました。
class Test {
public static void test() {
System.out.println("hi");
}
public static void main(String[] args) {
Test.test();
}
}
静的メソッドと静的変数の良いところは、それを使用するためにクラスのインスタンスが必要ないことです。
通常、インスタンスを作成してメソッドを呼び出します
Test myClass = new Text();
myClass.test();
ただし、静的メソッドの場合、最初の行は必要ありません。最初にクラス名を記述するだけで済みます。
Test.test();
ただし、静的メソッドでは、Test クラス内のインスタンス変数にアクセスすることはできません - それらも静的でない限り!
コールしTest.test()
ます。main
メソッドは静的で同じクラスにあるため、直接呼び出すこともできtest()
ます。