You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java Vavr将Try<List<Message>>转换为Try<List<SummarizedMessage>>

优化实现方案

你可以直接对messagesRepository.findAll()返回的Vavr Try实例进行链式map操作,无需手动取值再封装,完全符合Vavr的函数式设计规范:

return messagesRepository.findAll()
        .map(messages -> messages.stream()
                .map(m -> new SummarizedMessage(m.destination(), m.title(), m.date()))
                .toList()
        );

优化点说明

  • 移除了不安全的get()调用:原代码中get()会在Try为Failure状态时直接抛出未捕获异常,丢失Try自带的错误容错能力,优化后的写法会自动传递上游的Failure状态,不会中途崩溃
  • 无需手动调用Try.success()封装结果:map操作会自动将转换后的返回值封装为Success状态,全程保持Try的容器语义
  • 无多余中间变量,链式调用符合函数式编码习惯

如果你的项目中已经全面使用Vavr集合API替换JDK集合,写法可以更简洁:

// 当messagesRepository.findAll()返回Try<io.vavr.collection.List<Message>>时可用
return messagesRepository.findAll()
        .map(messages -> messages.map(m -> new SummarizedMessage(m.destination(), m.title(), m.date())));

内容的提问来源于stack exchange,提问作者Marcio Frayze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 20:15:00