Java中Lambda构建优雅API的核心是将行为作为一等公民,通过语义明确的函数式接口(优先JDK内置)、合理参数顺序、方法引用支持、异常安全处理及防御性检查来降低调用者认知负担。
Java 中 Lambda 表达式构建优雅 API 的核心,是把“行为”变成一等公民——让调用者能自然、安全、低认知负担地传入逻辑,而不是被接口、类、模板代码包围。
不要暴露 Object 或自定义空接口,而是选用或定义语义明确的函数式接口。比如需要用户决定“是否保留某元素”,就用 Predicate<T>;需要“把输入转成另一种形式”,就用 Function<T, R>。
Predicate、Function、Consumer、Supplier、BiFunction,它们已被广泛理解,IDE 支持好,文档清晰RetryPolicy),避免泛型爆炸retryWith(RetryConfig config) 比 retryOnException(..., Function<?,?>, Predicate<?>, Supplier<?>) 更易用参数顺序应匹配常见阅读习惯:先数据,再策略,最后钩子。例如集合处理类方法:
map(List<T> list, Function<T, R> mapper) —— 数据在前,行为在后findFirst(List<T> list, Predicate<T> condition) —— 主体 + 条件withMapper(Function<T,R>, List<T>) 会打断阅读流优雅 API 应天然兼容 :: 语法,并允许逻辑拼接,降低重复定义成本。
立即学习“Java免费学习笔记(深入)”;
Function<String, Integer>,就能直接接 Integer::parseInt
Function<T, R> 的方法,可被 .andThen(...) 或 .compose(...) 扩展Validators.notBlank() 返回预定义 Predicate<String>,用户无需写 s -> s != null && !s.trim().isEmpty()
Lambda 在 API 中不应成为异常黑洞。优雅意味着调用者能预见失败路径,而非被迫包裹 try-catch。
ThrowingFunction),并在 Javadoc 明确说明