Java8 四大核心函数式接口Function、Consumer、Supplier、Predicate
Posted on 2020-09-16 14:39 WinChance 阅读(277) 评论(0) 编辑 收藏 举报1、Function<T, R>
T:入参类型,R:出参类型
调用方法:R apply(T t);
定义函数示例: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); } }