首页 > 编程开发 > Java    日期:2026-07-14 / 浏览

Supplier、Function、BiFunction区别

在 Java 中,Supplier、Function、BiFunction 是 java.util.function 包下的三个核心函数式接口,它们的主要区别在于参数数量和返回值类型

1、Supplier

  • 功能:不接受参数,仅返回一个值(供应一个结果)。
  • 抽象方法:T get()
  • 适用场景:延迟计算、生成数据、工厂模式等。

示例:

import java.util.function.Supplier;

public class SupplierExample {
    public static void main(String[] args) {
        // 供应一个随机数
        Supplier<Integer> randomSupplier = () -> (int) (Math.random() * 100);
        System.out.println(randomSupplier.get()); // 每次调用可能返回不同的值
    }
}

2、Function<T, R>

  • 功能:接受一个参数(类型 T),返回一个结果(类型 R)。
  • 抽象方法:R apply(T t)
  • 适用场景:数据转换、映射操作等。

示例:

import java.util.function.Function;

public class FunctionExample {
    public static void main(String[] args) {
        // 将字符串转换为其长度
        Function<String, Integer> lengthFunction = s -> s.length();
        System.out.println(lengthFunction.apply("Hello")); // 输出:5
    }
}

3、BiFunction<T, U, R>

  • 功能:接受两个参数(类型 T 和 U),返回一个结果(类型 R)。
  • 抽象方法:R apply(T t, U u)
  • 适用场景:需要处理两个输入的计算,如合并数据、比较等。

示例:

import java.util.function.BiFunction;

public class BiFunctionExample {
    public static void main(String[] args) {
        // 计算两个整数的和
        BiFunction<Integer, Integer, Integer> sumFunction = (a, b) -> a + b;
        System.out.println(sumFunction.apply(3, 5)); // 输出:8
    }
}

核心区别总结

接口参数数量返回值抽象方法签名
Supplier0TT get()
Function<T,R>1 (T)RR apply(T t)
BiFunction<T,U,R>2 (T, U)RR apply(T t, U u)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章