Java8 四大核心函数式接口 您所在的位置:网站首页 常用函数式接口有哪几种 Java8 四大核心函数式接口

Java8 四大核心函数式接口

2024-06-03 10:05| 来源: 网络整理| 查看: 265

简单了解了函数式接口,接着我们就来看看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 实验室设备网 版权所有