用vavr进行空检查

时间:2019-02-27 11:11:45

标签: java vavr

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

我以前经常这样:

import xlwings
xlwings.App().visible = False

但是我正在寻找一种更好的方法,也许使用vavr选项?但是我遇到了问题。我了解,如果逻辑不为空,则将其放入“映射”逻辑;如果逻辑为空,则将其放入“获取”逻辑。但是我不能做(空)。如果到达时间为null,我想将其保留为null。

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

我还尝试将对象中的到达时间变量转换为Option,但我只是将对象作为响应发送到API中,它将其转换为如下形式:

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

这很丑。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

arrivalTime成为Option似乎是最具表现力和功能的。您可以轻松地映射您提到的值。

但是如上所述,序列化可能需要一些工作。有一些Vavr模块可以做到这一点:

  • vavr-jackson,当您将jackson用作JSON序列化程序库时可以使用
  • vavr-gson,当您将GSON用作JSON序列化程序库时可以使用