Java 8インタフェースの新しい実装方式
1811 ワード
インタフェースのデフォルト実装の定義
実装クラス1
実装クラス2
プラントメソッド
静的メソッド呼び出し
public interface Defaulable {
default String notRequired() {
return "Default implementation";
}
}
実装クラス1
public class DefaulableImpl implements Defaulable {
@Override
public String notRequired() {
return "Overridden implementation";
}
}
実装クラス2
public class DefaulableImpl2 implements Defaulable {
@Override
public String notRequired() {
return "Overridden implementation2";
}
}
プラントメソッド
public interface DefaulableFactory {
static Defaulable create(Supplier< Defaulable > supplier){
return supplier.get();
}
}
public class DefaulableTest {
public static void main(String[] args) {
Defaulable defaulable=DefaulableFactory.create(DefaulableImpl::new);
System.out.println(defaulable.notRequired());
Defaulable defaulable1=DefaulableFactory.create(DefaulableImpl2::new);
System.out.println(defaulable1.notRequired());
}
}
静的メソッド呼び出し
public class Car {
public static Car create( Suppliersupplier){
return supplier.get();
}
// , Class::static_method。 Car 。
public static void getName(Car c){
System.out.println(" ");
}
}
List cars = Arrays.asList(car, car1);
// , Class::static_method。 Car 。
cars.forEach(Car::getName);
// , Class::method。 , 。
cars.forEach(Car::repair);
// , instance::method。 , Car
Car police = Car.create( Car::new );
cars.forEach( police::follow );