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 と違うことを認識しておきましょう。