当前位置: 首页 > 知识库问答 >
问题:

使用vavr的空检查

太叔鸿博
2023-03-14

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

我以前是这样的:

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

但我正在寻找一种更好的方法,也许使用vavr选项?但我遇到了麻烦。我明白,如果逻辑不是空的,我就把它放入“map”中,如果逻辑是空的,我就把逻辑放入“get”中。但我不能得到(空)。如果arrivalTime为null,我希望将其保持为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
    },

这是非常丑陋的。有什么想法吗?

共有1个答案

帅彦
2023-03-14

看起来将arrivaltime作为选项将是最具表现力和功能的。您可以像您提到的那样轻松地映射值。

但是如前所述,序列化可能需要一些工作。有一些Vavr模块正是这样做的:

  • vavr-jackson在使用jackson作为JSON序列化程序库时可以使用
  • vavr-gson,在将GSON用作JSON序列化程序库时可以使用
 类似资料:
  • Java 8 的对象函数式扩展,目标是减少代码行数,提高代码质量,提供了持久化集合、错误处理函数式抽象、模式匹配等等。 Vavr 融合了面向对象编程的强大功能,具有功能编程的优雅性和坚固性。 最有趣的部分是拥有功能丰富且持久的集合库,可以与 Java 的标准集合顺利集成。

  • 如何以功能性方式使用vavr的“左”或“右”? 我有一个方法,它返回一个 到目前为止,我找到的最接近的解决方法是biMap()方法,它看起来像 可以说,映射函数应该用于映射而不是副作用,因此即使它有效,我也在寻找替代方案。

  • 我正在使用Flatter desktop项目,我想检索一些双值,但当继续将某些字段作为空字段并尝试检索数据时,我遇到了一个错误,无法填充所有文本字段。如何将这些TextField检查为空字段并检索空值。 错误:-════════ 用手势捕捉异常═══════════════════════════════════════════ 处理手势时引发以下FormatException:无效的double

  • 本文向大家介绍sitecore 空/空检查,包括了sitecore 空/空检查的使用技巧和注意事项,需要的朋友参考一下 示例 IsNotNull 这是一种非常简单且流行的方法,用于检查项目是否不为空。它只是检查传入的对象是否为空。 IsNotNullOrEmpty 这与上面的IsNotNull相同,但是适用于字符串值而不是对象。 一片空白 这只是该IsNotNull()方法的逆过程。此方法断言该对

  • 我有一个函数,当某些条件不满足时,它应该不返回任何内容(void)或字符串。 我也试过这句话。左(无效)

  • 每当我尝试注册并点击注册按钮时,我都会遇到这种类型的空值检查运算符的问题。我收到了这个错误消息 ══════ 异常捕获手势 ════════════════════ 在处理手势时引发了以下_CastError:对空值使用空检查运算符 当抛出异常时,这是堆栈 #0\u授权状态。建筑包装:gr_空间/屏幕/配置文件_屏幕。省道:244 #1(香港)地产_handleTap包装:颤振/材料/墨水井。省道