Javaのinterface
デフォルト実装
Java 8からはinterfaceがデフォルトの実装を持てるようになった
これはStream APIの導入で List interfaceを破壊せずにメソッドを追加するため。
いわば互換性のため。
共通の実装を持つクラスの振る舞いは、抽象クラスに書いた方が良い
interfaceのstaticメソッド
メソッドの実装を持てるようになったので、staticメソッドも書けるようになった
特定の実装への逆参照をさせることで、デフォルトの実装クラスを示すことができる
これはファクトリメソッドでよくある
デフォルトの実装クラスをpackage privateにして隠せるメリットがある