Java8其他新特性(一) 函數式(Functional)接口

一、什麼是函數式接口

只包含一個抽象方法的接口,稱爲 函數式接口 。

我們可以在一個接口上使用 FunctionalInterface 註解,這樣做可以檢查它是否是一個函數式接口。同時 javadoc 也會包含一條聲明,說明這個接口是一個函數式接口。

自定義函數式接口:

/**
 * 自定義函數式接口
 */
@FunctionalInterface
public interface MyInterface {
    
    void method1();
    
//    void method2();
}

在Java8的java.util.function包下定義了很多函數式接口

下一篇:Java8其他新特性(二) Lambda表達式


以下內容供瞭解

二、Java內置四大核心函數式接口:

1、消費型接口 Consumer<T>  void accept(T t)

    //消費型接口
    @Test
    public void test1(){

        happyTime(500, new Consumer<Double>() {
            @Override
            public void accept(Double aDouble) {
                System.out.println("買了1件衣服,價格爲:" + aDouble);
            }
        });
        System.out.println("*********分隔符***********");
        //lambda寫法
        happyTime(400,money -> System.out.println("買了1件衣服,價格爲:" + money));
    }

    public void happyTime(double money, Consumer<Double> con){
        con.accept(money);
    }

 

2、供給型接口 Supplier<T>      T get()

3、函數型接口 Function<T,R>    R apply(T t)

4、斷定型接口 Predicate<T>  boolean test(T t)

    //斷定型接口 Predicate<T>    boolean test(T t)
    @Test
    public void test2(){
        List<String> list = Arrays.asList("北京","南京","天津","東京","西京","普京");

        List<String> filterStrs = filterString(list, new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.contains("京");
            }
        });
        System.out.println(filterStrs);
        System.out.println("*********分隔符*********");
        //lambda寫法
        List<String> filterStrs1 = filterString(list,s -> s.contains("京"));
        System.out.println(filterStrs1);
    }

    //根據給定的規則,過濾集合中的字符串。此規則由Predicate的方法決定
    public List<String> filterString(List<String> list, Predicate<String> pre){
        ArrayList<String> filterList = new ArrayList<>();
        for(String s : list){
            if(pre.test(s)){
                filterList.add(s);
            }
        }
        return filterList;
    }

三、其他接口

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