Java8 四大核心函数式接口 | 您所在的位置:网站首页 › 常用函数式接口有哪几种 › Java8 四大核心函数式接口 |
简单了解了函数式接口,接着我们就来看看Java8 的四大核心函数式接口吧! 一、消费型接口: 基本格式: Consumer接受一个输入参数并且无返回值。 方法调用: void accept(T t); 使用示例: @Test public void testConsumer() { handle(6, (x) -> System.out.println(x + 2)); } public void handle(int value, Consumer consumer) { consumer.accept(value); }因为没有出参,所以常用于打印、发送短信等消费动作。 二、供给型接口: 基本格式: Supplier无输入参数,返回一个结果T。 方法调用: T get(); 使用示例: @Test public void testSupplier() { Person person = Person.builder() .name("供给者") .build(); System.out.println(getObject(() -> person.getName())); } public String getObject(Supplier supplier) { return supplier.get(); }常用于符合条件时调用获取结果;运行结果提前定义,但不运行。 三、函数型接口: 基本格式: Function接受一个输入参数T,返回一个结果R。 方法调用: R apply(T t); 使用示例: @Test public void testFunction() { int result = plusTwo(6, (x) -> x + 2); System.out.println(result); int before = before(6, x -> x + 2, x -> x * 10); // 62 System.out.println(before); int after = after(6, x -> x + 2, x -> x * 10); // 80 System.out.println(after); } public Integer plusTwo(int origen, Function function) { return function.apply(origen); } public Integer before(int value, Function function1, Function function2) { // value作为function2的参数,返回一个结果,该结果作为function1的参数,返回一个最终结果 return function1.compose(function2).apply(value); } public Integer after(int value, Function function1, Function function2) { // value作为function1的参数,返回一个结果,该结果作为function2的参数,返回一个最终结果 return function1.andThen(function2).apply(value); } 四、断言型接口: 基本格式: Predicate接受一个输入参数T,返回一个布尔值结果。 方法调用: boolean test(T t); 使用示例: @Test public void testPredicate() { boolean judge = judge(6, (x) -> (x & 1) != 1); System.out.println(judge); List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); System.out.println("输出所有数据:"); eval(list, x -> true); // 1 2 3 4 5 6 7 8 9 System.out.println(); System.out.println("输出所有偶数:"); eval(list, x -> (x & 1) != 1); // 2 4 6 8 System.out.println(); System.out.println("输出大于 3 的所有数字:"); eval(list, x -> x > 3); // 4 5 6 7 8 9 System.out.println(); // 验证输入是否正确 boolean valid = valid("许宣", x -> !x.isEmpty() && x.length() for (Integer n : list) { if (predicate.test(n)) { System.out.print(n + " "); } } } public boolean valid(String name, Predicate predicate) { return predicate.test(name); }常用于条件判断 |
CopyRight 2018-2019 实验室设备网 版权所有 |