对于我的API,我解析一个对象并使用lombok构建器创建我的对象。其中一个变量是类型为arrivalTime的“LocalDateTime”,当然,它可能为null。
我以前是这样的:
visits.add(visit.builder()
.arrivalTime(legacyVisit.getArrivalTime() == null ? null :
LocalDateTime.parse(legacyVisit.getArrivalTime(), ISO_OFFSET_DATE_TIME))但我正在寻找一种更好的方法,也许使用vavr选项?但我遇到麻烦了。我知道,如果逻辑不是null,我会把它放到"map“中,如果它是空的,我会把它放到"get”逻辑中。但我不能得到(空)。如果arrivalTime是空的,我想把它保持为空。
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
},这很难看。有什么想法吗?
发布于 2019-02-27 13:15:19
看起来,让arrivalTime成为Option将是最有表现力和最强大的。正如您所提到的,您可以很容易地映射这些值。
但是如前所述,序列化可能需要一些工作。有些Vavr模块正是这样做的:
https://stackoverflow.com/questions/54904152
复制相似问题