如何将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
相关产品推荐
相关产品推荐

