Java の static についてご紹介します。
staticは静的なため、インスタンス化しなくとも使用することが出来ます。ソースコードを使用して実際の挙動を見てみます。
static の フィールド、メソッド と、static でない フィールド、メソッド を作成します。
package com.example.demo;
public class TestClass {
public String testField;
public static String staticTestField;
public void testMethod() {
System.out.println("Hello staticTestMethod()");
}
public static void staticTestMethod() {
System.out.println("Hello staticTestMethod()");
}
}
これをインスタンス化(new)せずに、それぞれ呼び出してみます。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SomeTestApplication {
public static void main(String[] args) {
SpringApplication.run(SomeTestApplication.class, args);
// static
String staticTestField = TestClass.staticTestField;
TestClass.staticTestMethod();
// non static
String testField = TestClass.testField; // エラーになります
TestClass.testMethod(); // エラーになります
// non static
TestClass testClass = TestClass(); // エラーになります
}
}
staticでないものはエラーになりました。
最後はクラスも呼び出してみましたが、staticではないのでやはりエラーになりました。staticフィールドやメソッドを持っていても Class は static にはなりません。abstract と違うことを認識しておきましょう。