メインのメソッドを呼び出そうとすると、エラーが発生します
非静的メソッドは、静的コンテキストから参照できません
メインでオブジェクトを作成し、それらをパラメーターとしてメソッドに送信しようとしましたが、どちらも機能しません。
メインのメソッドを呼び出そうとすると、エラーが発生します
非静的メソッドは、静的コンテキストから参照できません
メインでオブジェクトを作成し、それらをパラメーターとしてメソッドに送信しようとしましたが、どちらも機能しません。
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.print();
}
public void print() {
System.out.println("Hello");
}
}
静的メソッドから非静的メソッドにアクセス(呼び出す)するには、クラスのインスタンスが必要です。非静的メソッドまたはインスタンスメソッドは、クラスのインスタンスに限定されます。
以下はそれを説明する簡単な例です:
class Test {
public void nonStaticMethod() {
}
public static void main(String[] args) {
Test t = new Test(); //you need to create an instance of class Test to access non-static methods from static metho
t.nonStaticMethod();
}
}
main
静的メソッドです。public static void main(String[] args)
。
静的メソッドまたはブロックから、他の静的メソッドおよび静的インスタンスにアクセスできます。また、非静的メソッドまたはインスタンスにアクセスする場合は、オブジェクトを作成し、参照を介してアクセスする必要があります。
public class Test{
public static void main(String[] args){
print();// static method call
Test test = new Test();
test.print();// non static method call
}
public void print() {
System.out.println("Hello non static");
}
public static void print() {
System.out.println("Hello static");
}
}
通常のメソッドは、オブジェクトの作成時にインスタンス化されますが、static
メソッドには必須ではありません。メソッド内にいると言うとstatic
、非静的メソッドがインスタンス化されている(つまり、Object
作成されていない可能性がある)保証はないため、コンパイラーはそれを許可しません。