Optional.ofNullable()
仅检查null
值,而CollectionUtils.isNotEmpty()
不返回流。有没有办法将这两个功能结合在一起。
类似的东西 -
Collection.isNotEmpty(entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
而不是 -
Optional.ofNullable(entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
进行比较,请考虑以下内容:
if (entries == null || entries.isEmpty()) {
throw Exception("exception");
} else {
return entries.stream();
}
(Holger在几个评论中都提到了几乎相同的事情。)
我认为,如果/else语句,使用Optional
对这种情况并不是对常规的改进。
您可以简单地使用filter()
检查它不是空
Optional.ofNullable(entries)
.filter(e -> !e.isEmpty())
.orElseThrow(() -> new Exception("exception"))
.stream()
关于您要消除流本身中null
值的评论,您可以使用以下方式:
Optional.ofNullable(entries)
.filter(e -> !e.isEmpty())
.orElseThrow(() -> new Exception("exception"))
.stream()
.filter(Objects::nonNull)
也许:
Optional.ofNullable((entries == null || entries.isEmpty()) ? null : entries)
.orElseThrow(() -> new Exception("exception"))
.stream()
您可以将流映射到:
Optional.ofNullable(entries)
.filter(a -> !a.isEmpty())
.orElseThrow(() -> new Exception("exception"))
// do whatever with the stream if available