way*_*yne 3 java nullpointerexception java-stream option-type
这已经困扰我一段时间了。
所以我有一个Product类,其中包含一个列表Image(该列表可能为空)。
我想要做
product.getImages().stream().filter(...)
Run Code Online (Sandbox Code Playgroud)
但由于product.getImages()可能为空,我不能直接执行上面的操作,而是必须用它来包装它Optional.ofNullable(...).ifPresent(...)
Optional.ofNullable(product.getImages())
.ifPresent(imgs->imgs.stream().filter(...))
Run Code Online (Sandbox Code Playgroud)
对我来说,即使与以下相比,它看起来也很麻烦:
if(product.getImages() != null){
product.getImages().stream().filter(...)
}
Run Code Online (Sandbox Code Playgroud)
假设我无法更改Product::getImages(使其不返回 null),是否有更优雅的方法?
如果可选项为空Optional.stream,它会为您提供一个空流,否则它是由可选项包装的元素的单例流。
你可以这样做:
Stream<Image> imageStream =
Optional.ofNullable(product.getImages())
.stream()
.flatMap(Collection::stream)
.filter(...);
Run Code Online (Sandbox Code Playgroud)
imageStream如果返回 null 则为空getImages。
还有Stream.ofNullable(感谢Holger提醒!),可以替代Optional.ofNullable(product.getImages()).stream()
Stream<Image> imageStream =
Stream.ofNullable(product.getImages())
.flatMap(Collection::stream)
.filter(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |