1. 程式人生 > 實用技巧 >Java8 四大核心函式式介面Function、Consumer、Supplier、Predicate

Java8 四大核心函式式介面Function、Consumer、Supplier、Predicate

1、Function<T, R>

T:入參型別,R:出參型別

呼叫方法:Rapply(Tt);

定義函式示例:Function<Integer, Integer> func = p -> p * 10; // 輸出入參的10倍

呼叫函式示例:func.apply(10); // 結果100

    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
R apply(T t);

2、Consumer<T>

T:入參型別;沒有出參

呼叫方法:void accept(T t);

定義函式示例:Consumer<String> consumer= p -> System.out.println(p); // 因為沒有出參,常用於列印、傳送簡訊等消費動作

呼叫函式示例:consumer.accept("18800008888");

package com.hyc;
import java.util.function.Consumer;
public class Demo09Consumer {
    private
static void consumeString(Consumer<String> function) { function.accept("Hello"); } public static void main(String[] args) { consumeString(s -> System.out.println(s)); } }

3、Supplier<T>

T:出參型別;沒有入參

呼叫方法:T get();

定義函式示例:Supplier<Integer> supplier= () -> 100; // 常用於業務“有條件執行”時,符合條件再呼叫獲取結果的應用場景;執行結果須提前定義,但不執行。

呼叫函式示例:supplier.get();

package com.hyc;
import java.util.function.Supplier;
public class Demo08Supplier {
    private static String getString(Supplier<String> function) {
        return function.get();
    }

    public static void main(String[] args) {
        String msgA = "Hello";
        String msgB = "World";
        System.out.println(getString(() -> msgA + msgB));
    }
}

4、Predicate<T>

T:入參型別;出參型別是Boolean

呼叫方法:boolean test(T t);

定義函式示例:Predicate<Integer> predicate = p -> p % 2 == 0; // 判斷是否、是不是偶數

呼叫函式示例:predicate.test(100); // 執行結果true

package com.hyc;
import java.util.function.Predicate;
public class Demo15PredicateTest {
    private static void method(Predicate<String> predicate) {
        boolean veryLong = predicate.test("HelloWorld");
        System.out.println("字串很長嗎:" + veryLong);
    }

    public static void main(String[] args) {
        method(s -> s.length() > 5);
    }
}