我想从中获取以下数据:
MyObject.builder() .lastUpdated(tuple.getT2().isEmpty() ? null : tuple.getT2().get(0).getLastUpdated().toInstant()) ... ... .build()
tuple.getT2().get(0).getLastUpdated() 可以为空。。。
tuple.getT2().get(0).getLastUpdated()
.lastUpdated( tuple.getT2().stream() .map(Optional::ofNullable) .findFirst() .flatMap(Function.identity()) .map(metadata -> metadata.getLastUpdated().toInstant()) //NPE .orElse(null))
但我得到了NPE
.map(metadata -> metadata.getLastUpdated().toInstant())
这个 map lambda不是一个不发生npe的神奇地方。如果你有一个可以为空的东西,你需要映射到它以避免NPE。替换此呼叫:
map
具有
.map(TypeOfMetadata::getLastUpdated) .map(TypeOfGetLastUpdated::toInstant)
这将使它使用 orElse 值if metadata.getLastUpdated() 为空。
orElse
metadata.getLastUpdated()