官网地址

程序猿升级课

热爱开源,喜欢摸索


Java8 接口新实现方式

定义接口默认实现

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( Supplier<Car>supplier){
        return supplier.get();
    }
    //方法引用是静态方法引用,它的语法是Class::static_method。请注意这个方法接受一个Car类型的参数。
    public static void getName(Car c){
        System.out.println("宝马");
    }
}


    List<Car> 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 );
  
posted @ 2017-07-15 22:58  chinesszz  阅读(351)  评论(0编辑  收藏  举报
ヾ(≧O≦)〃嗷~