Java8 四大核心函式式介面Function、Consumer、Supplier、Predicate
阿新 • • 發佈:2020-09-16
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 { privatestatic 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); } }