Java 四大函数式接口(函数型/断定型/消费型/供给型)


参考

  • 狂神说

介绍

java.util.function 包下面还有很多接口,不仅仅是当前文章说明的四种。

为什么要学习这四种接口呢?因为 java 很多源码都使用了这些接口,另外自己要做一些实现的时候也可以直接使用,无需再单独定义。

接口 描述 方法 类型
Interface Consumer 表示接受单个输入参数并且不返回任何结果的操作。 与大多数其他功能接口不同, Consumer预计会通过副作用运行。 accept(Object) 消费型
Interface Function 表示接受一个参数并生成结果的函数。 apply(Object) 函数型
Interface Predicate 表示一个参数的谓词(布尔值函数)。 test(Object) 断定型
Interface Supplier 每次调用供应商时都不要求返回新的或不同的结果。 get() 供给型

代码

package stream;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * @Author 夏秋初
 * @Date 2022/3/4 10:11
 */
public class Test {
    public static void main(String[] args) {
        // 表示接受单个输入参数并且不返回任何结果的操作。
//        Consumer consumer = (t)->{
//            System.out.println(t);
//        };
        Consumer consumer = (t)->System.out.println(t);
        consumer.accept("我是 Consumer");
        // 表示接受一个参数并生成结果的函数。
//        Function function = (t)->{
//            return t+" Function";
//        };
        Function function = (t)->t+" Function";
        System.out.println(function.apply("ABC"));
        // 根据给定的参数计算此谓词。
//        Predicate predicate = (t)->{
//            return t.length()>0;
//        };
        Predicate predicate = (t)->t.length()>0;
        System.out.println(predicate.test("ABC"));
        // 每次调用时都不要求返回新的或不同的结果。
//        Supplier supplier = ()->{
//            return " Supplier ";
//        };
        Supplier supplier = ()->" Supplier ";
        System.out.println(supplier.get());
    }
}

运行结果

我是 Consumer
ABC Function
true
 Supplier 

进程已结束,退出代码为 0