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

参考

介绍

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

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

接口 描述 方法 类型
Interface Consumer 表示接受单个输入参数并且不返回任何结果的操作。 与大多数其他功能接口不同, Consumer预计会通过副作用运行。 accept(Object) 消费型
Interface Function<T,R> 表示接受一个参数并生成结果的函数。 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<String> consumer = (t)->{
//            System.out.println(t);
//        };
        Consumer<String> consumer = (t)->System.out.println(t);
        consumer.accept("我是 Consumer");
        // 表示接受一个参数并生成结果的函数。
//        Function<String, String> function = (t)->{
//            return t+" Function";
//        };
        Function<String, String> function = (t)->t+" Function";
        System.out.println(function.apply("ABC"));
        // 根据给定的参数计算此谓词。
//        Predicate<String> predicate = (t)->{
//            return t.length()>0;
//        };
        Predicate<String> predicate = (t)->t.length()>0;
        System.out.println(predicate.test("ABC"));
        // 每次调用时都不要求返回新的或不同的结果。
//        Supplier<String> supplier = ()->{
//            return " Supplier ";
//        };
        Supplier<String> supplier = ()->" Supplier ";
        System.out.println(supplier.get());
    }
}

运行结果

我是 Consumer
ABC Function
true
 Supplier 

进程已结束,退出代码为 0
posted @ 2022-03-04 10:34  夏秋初  阅读(426)  评论(0编辑  收藏  举报