Java 8ではinterfaceにstaticメソッドを記述できるようになりました。


interfaceに関する変更点として、Java 8ではdefaultメソッドが有名ですが、
他の変更点としてstaticメソッドが定義できるようになりました。


具体的には
次のようなメソッドが定義できます。

public interface Java8TestInterface {
    public static void hello(){
         System.out.println("Hello World!!");
    }
}


実行するには次のようにします。

// 実行可能
Java8TestInterface.hello();


このstaticメソッドはInterfaceから実行できて、implementしたクラスは自動で
該当メソッドを持っているわけではありません。

public class Java8TestImpl implements Java8TestInterface {

}


// コンパイルエラーになる
Java8TestImpl.hello();


これの派生でmainメソッドをinterfaceに実装して実行できるようになりました。

public interface Java8TestInterface2 {
    public static void main(String[] args){
        System.out.println("Hello World!!");
    }
}


実行結果:

run:
Hello World!!

どうでもよい無駄知識ですが。