defaultキーワード
1006 ワード
defaultはjava 8に導入されたキーワードであり、defaultによって識別される方法は、Virtual extension methodsとも言える。
Virtual extension methods:インターフェースの内部にはいくつかのデフォルトの方法実現(すなわちインターフェースにはメソッド体が含まれ、これはJavaの前のバージョンによるインターフェースのシンタックス制限を打破することができる)が含まれており、インターフェースを拡張する際にインターフェースに関連する実現コードを破壊しないようにしています。
例えば、IterableインターフェースにおけるforEachとspliteratorの方法:インターフェースでdefault修飾の方法を作成するには、方法体 が必要である。インターフェースは、staticおよびdefaultで修飾された方法で方法体が必要であり、ここでstaticによって修飾された方法は、このインターフェースの静的な方法(すなわち、このインターフェース(クラス)に属する方法を表し、継承されてはいけない当然、Overrideは存在しないが、呼び出しられても良い) 本類のオブジェクトは、直接にこのクラスのパブリックメンバシップ方法 を呼び出すことができる。 defaultキーワードは利点があり、デメリットはdefaultキーワードが抽象類とインターフェースの間の著しい違いを消したことにあります。つまりインターフェースは抽象的な方法しかないです。
Virtual extension methods:インターフェースの内部にはいくつかのデフォルトの方法実現(すなわちインターフェースにはメソッド体が含まれ、これはJavaの前のバージョンによるインターフェースのシンタックス制限を打破することができる)が含まれており、インターフェースを拡張する際にインターフェースに関連する実現コードを破壊しないようにしています。
例えば、IterableインターフェースにおけるforEachとspliteratorの方法:
default void forEach(Consumer super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
注意: