Mat*_*ley 0 java optional java-stream
我想从以下位置获取以下数据:
MyObject.builder()
.lastUpdated(tuple.getT2().isEmpty() ? null : tuple.getT2().get(0).getLastUpdated().toInstant())
...
...
.build()
Run Code Online (Sandbox Code Playgroud)
tuple.getT2().get(0).getLastUpdated() 可以为空...
我试过:
.lastUpdated(
tuple.getT2().stream()
.map(Optional::ofNullable)
.findFirst()
.flatMap(Function.identity())
.map(metadata -> metadata.getLastUpdated().toInstant()) //NPE
.orElse(null))
Run Code Online (Sandbox Code Playgroud)
但我得到了 NPE
.map(metadata -> metadata.getLastUpdated().toInstant())
Run Code Online (Sandbox Code Playgroud)
该map拉姆达是不是有些神奇的地方,NPE上不会发生。如果你有一个可能为空的东西,你需要映射到它以避免 NPE。替换此调用:
.map(metadata -> metadata.getLastUpdated().toInstant())
Run Code Online (Sandbox Code Playgroud)
和
.map(TypeOfMetadata::getLastUpdated)
.map(TypeOfGetLastUpdated::toInstant)
Run Code Online (Sandbox Code Playgroud)
orElse如果metadata.getLastUpdated()为空,这将使它使用该值。
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |