java原生函数式接口最多支持两个参数,处理三个参数需自定义trifunction接口;该接口含单一抽象方法apply,支持泛型类型组合,可用lambda实现并配合静态/默认方法增强功能。

Java 原生的函数式接口(如 Function、BiFunction)最多支持两个参数,要处理三个参数,必须自定义函数式接口。
定义三参数函数式接口
创建一个只含一个抽象方法、并用 @FunctionalInterface 标注的接口,比如计算三个 int 的和:
@FunctionalInterface
public interface TriFunction<t u v r> {
R apply(T t, U u, V v);
}</t>
泛型 T,U,V 对应三个输入类型,R 是返回类型。接口简洁、可复用,支持任意类型组合(如 TriFunction<string integer boolean double></string>)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
使用 Lambda 表达式实现
定义后可直接用 Lambda 赋值,无需额外类:
-
基础用法:计算三整数之和
TriFunction<integer integer> sum3 = (a, b, c) -> a + b + c;</integer>
调用:int result = sum3.apply(1, 2, 3); // 得到 6 -
灵活类型:混合类型,比如拼接字符串 + 数字转大写
TriFunction<string integer boolean string> format = (s, n, upper) -> (upper ? s.toUpperCase() : s) + "-" + n;</string>
配合方法引用或默认方法增强
可在接口中添加静态或默认方法提升实用性:
-
静态工厂方法:简化常见逻辑
static <t> TriFunction<t t> max() { return (a, b, c) -> Stream.of(a, b, c).max(Comparator.naturalOrder()).orElse(null); }</t></t> -
默认方法链式扩展:比如加个
andThen类似Functiondefault <r> TriFunction<t u v r> andThen(Function super W, ? extends R> after) { ... }</t></r>(需自行实现)
替代方案对比(不推荐但需了解)
有人尝试用嵌套 BiFunction 或包装对象(如 new Object[]{a,b,c}),但会牺牲类型安全和可读性。自定义接口更直接、IDE 支持好、编译期检查强。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










