Skip to content

大多数情况下我们不需要自己去撰写函数式接口,因此jdk自带的函数接口应该是日常开发中,使用频率最高的函数式接口了,这里已经整理成表格的形式方便后续查阅使用。

接口输入参数返回类型使用说明
Predicate<T>Tboolean断言
Consumer<T> T/消费一个数据
Function<T,R>TR输入T输出R的函数
Supplier<T>/T提供一个数据
UnaryOperator<T>TT一元函数(输入输出类型相同)
BiFunction<T,U,R>(T,U)R两个输入的函数
BinaryOperator<T>(T,T)T二元函数(输入输出类型相同)

使用

java
public static void main(String[] args) {
    // 断言
    Predicate<Integer> predicate = i -> i > 0;
    System.out.println(predicate.test(-1));

    // 消费
    Consumer<String> consumer = s -> System.out.println(s);
    consumer.accept("张三");

    // 输入T输出R
    Function<Integer, String> function = i -> i >= 0 ? "正数" : "负数";
    function.apply(7);

    // 提供一个数据
    Supplier<String> stringSupplier = () -> "测试";
    System.out.println(stringSupplier.get());

    // 一元函数
    UnaryOperator<String> unaryOperator = s -> "处理后" + s;
    System.out.println(unaryOperator.apply("Test"));

    // 两个输入的函数
    BiFunction<String,Boolean,Integer> biFunction = (s, b) -> {
        // 如果b为true,返回0;如果s为test返回1,否则返回-1
        if (b){
            return 0;
        }
        if ("test".equals(s)){
            return 1;
        }
        return -1;
    };
    System.out.println(biFunction.apply("test", false));

    // 二元函数
    BinaryOperator<String> binaryOperator = (s, s2) -> s+s2;
    System.out.println(binaryOperator.apply("雷军", "666"));
}

结果

java
false
张三
测试
处理后Test
1
雷军666