JUC併發程式設計學習(十一)四大函式式介面(必備)

高同學,你好發表於2023-11-05

四大函式式介面(必備)

程式設計師:泛型、反射、註解、列舉

新時代程式設計師:lambda表示式、鏈式程式設計、函式式介面、Stream流式計算

函式式介面:只有一個方法的介面

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

//@FunctionalInterface 函式式介面,超級多
//簡化程式設計模型,在新版本的框架中大量應用!
//foreach(消費者類的函式式介面)

四大函式式介面:Consumer、Function、Predicate、Supplier

Function

  • Function 函式式介面 R apply(T t); 輸入一個T型別的引數,返回一個R型別的值
  • 只要是函式式介面都可以用lambda表示式簡化

簡化前:

Function ft = new Function<String,String>() {
    @Override
    public String apply(String str) {
        return str;
    }
};

簡化後:

Function ft = (str)->{return str;};

更加簡化後:

Function ft = str->{return str;};

Predicate

  • Predicate 斷定型介面 有一個輸入引數,返回型別只能是boolean值

  • 同樣是一個函式式介面,可以簡化

    簡化前:

    Predicate<String> pr = new Predicate<String>() {
        @Override
        public boolean test(String str) {
            return str.isEmpty();
        }
    };
    

    簡化後:

    Predicate<String> pr = str ->{return str.isEmpty();};
    

Comsumer

  • Comsumer 消費者介面 有一個輸入引數,沒有返回值
  • 同樣可以簡化

簡化前:

Consumer<String> stringConsumer = new Consumer<>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
};

簡化後:

Consumer<String> stringConsumer = str ->{
    System.out.println(str);
};

Supplier

  • Supplier 供給者介面 沒有引數只有一個返回值
  • 同樣可以簡化

簡化前:

Supplier<String> stringSupplier = new Supplier<>() {
    @Override
    public String get() {
        return "我的世界";
    }
};

簡化後:

Supplier<String> stringSupplier = ()->{return "我的世界";};

相關文章