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

如何将Java Optional转换为Kotlin Arrow Option?求最优实现方案

将Java Optional转换为Arrow Option的最优方式

目前Arrow框架并没有提供直接将Java Optional转换为Arrow Option的开箱即用工具方法,你自己实现的扩展函数就是非常合适的最优方案——逻辑清晰,性能也没有额外开销:

fun <T> Optional<T>.toOption(): Option<T> = if (this.isPresent) Some(this.get()) else none()

这个实现的逻辑很直观:

  • 判断Java Optional是否包含值(通过isPresent方法)
  • 若存在值,用Arrow的Some类包装该值;若为空,则返回Arrow的none()

如果偏好更简洁的写法,也可以借助Optional的map方法来简化代码,效果完全一致:

fun <T> Optional<T>.toOption(): Option<T> = this.map(::Some).orElse(none())

两种实现没有本质差异,选择哪一种取决于你的代码风格习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:50:21