gpt4 book ai didi

java - 使用 vavr 进行空检查

转载 作者:行者123 更新时间:2023-12-02 10:12:34 25 4
gpt4 key购买 nike

对于我的 API,我正在解析一个对象并使用 lombok 构建器创建我的对象。其中一个变量是 LocalDateTime 类型的“arrivalTime”,当然它可以为 null。

我以前是这样的:

visits.add(visit.builder()
.arrivalTime(legacyVisit.getArrivalTime() == null ? null :
LocalDateTime.parse(legacyVisit.getArrivalTime(), ISO_OFFSET_DATE_TIME))

但是我正在寻找一种更好的方法来做到这一点,也许使用 vavr 选项?但我遇到了问题。据我所知,如果逻辑不为空,则将其放入“映射”逻辑;如果逻辑为空,则将其放入“获取”逻辑中。但我无法执行 get(null) 操作。如果到达时间为空,我想将其保留为空。

visits.add(visit.builder()
.arrivalTime(Option.of(legacyVisit.getArrivalTime())
.map(p -> LocalDateTime.parse(p, ISO_OFFSET_DATE_TIME)))

我还尝试将对象中的arrivalTime变量转换为选项,但我只是将对象作为API中的响应发送,它会将其变成如下所示:

    "arrivalTime": {
"empty": true,
"lazy": false,
"singleValued": true,
"async": false,
"defined": false,
"orNull": null
},

这非常难看。有任何想法吗?

最佳答案

看起来将 arrivalTime 作为 Option 将是最具表现力和最强大的。您可以轻松映射您提到的值。

但正如前面提到的,序列化可能需要一些工作。有一些 Vavr 模块可以做到这一点:

  • vavr-jackson当您使用 jackson 作为 JSON 序列化器库时可以使用它
  • vavr-gson当您使用 GSON 作为 JSON 序列化器库时可以使用它

关于java - 使用 vavr 进行空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com