函數式接口

  jdk1.8之後,所謂函數式接口是指在接口中只有一個抽象方法,可以使用 @FunctionalInterface註解來約束,
有多個抽象方式就好報錯;使用函數式接口,所以使用lambda表達式時,編譯器可以根據上下文找到對應的接口,方法,
確定參數類型.
函數式接口示例
@FunctionalInterface
public interface MyFunctionInterface {
    /**
     * 抽象方法
     */
    void sayHello();

    /**
     * 函數接口可以有默認實現
     */
    default void speakEnglish() {
        System.out.println("hello everybody !");
    }
}
java8有四大函數接口
1.消費型接口Consumer,有參數無返回值
 @Test
    public void testConsumer() {
        /**
         * @name消費型接口
         * @use Consumer<T>
         * @Param T 傳入參數
         * @fun 接受一個參數, 無返回值
         */
        Consumer<String> con = (x) -> {
            System.out.println("我消費了一個:" + x);
        };
        con.accept("蘋果");
    }

2.供應式接口Supplier,無參數有返回值
 @Test
    public void testSupplier() {
        /**
         * @name 供應式接口
         * @use Supplier<R>
         * @Param R返回值類型
         * @fun 無參數, 有返回值
         */
        Supplier<Date> supplier = () -> new Date();
        Date date = supplier.get();
        System.out.println("獲得了一個供應的日期:" + date);
    }
3.函數接口Function,有參數,有返回值
/**
     * @param T 傳入參數
     * @return R 返回參數
     * @name函數型接口
     * @use Function<T   ,   R>
     * @fun 接收一個參數, 有返回值
     */
    @Test
    public void testFunction() {
        Function<String, String> fun = (str) -> "hello," + str;
        String tom = fun.apply("Tom");
        System.out.println(tom);

    }
4.斷定型接口Predicate,接受一個參數,返回布爾值
/**
     * @param T 入參
     * @return Boolean 返回一個Boolean值
     * @name 斷定型接口
     * @use Predicate<T>
     * @fun 接收一個參數, 返回一個Boolean值
     */
    @Test
    public void testPredicate() {
        Predicate<Integer> predicate = (num) -> num > 0;
        System.out.println(predicate.test(5));

    }









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章