加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Streams中的断言

发布时间:2020-12-15 05:14:55 所属栏目:Java 来源:网络整理
导读:我知道我可以过滤一个流来获取那些非空的元素,然后随心所欲地使用它们.像这样的东西: myList.stream().filter(element - element != null).doOtherThings... 有没有办法断言元素在流函数中不为空,以便它遍历所有元素,如果它发现一个为null,它会抛出异常?我
我知道我可以过滤一个流来获取那些非空的元素,然后随心所欲地使用它们.像这样的东西:

myList.stream().filter(element -> element != null).doOtherThings...

有没有办法断言元素在流函数中不为空,以便它遍历所有元素,如果它发现一个为null,它会抛出异常?我一直在考虑以下内容:

myList.stream().assert(Objects::nonNull).doOtherThings...

解决方法

已经有一些非常好的建议.请允许我补充.如果你所追求的是断言声明中的断言,我想在代码中明确说明这一点,以引导读者了解我的目的.断言您的原始列表不包含任何空值:

assert ! myList.contains(null);

如果要在流管道的某处检查断言,那么简单的方法是:

assert myList.stream().map(this::transform).allMatch(Objects::nonNull);

如果您不想为断言创建单独的流但更喜欢在现有流管道的中间断言,请使用以下示例:

myList.stream()
                .peek(e -> { assert e != null; })
                .toArray();

您可能会担心使用偷看不太好,这也是我最后提到这个选项的原因. peek被记录为存在“主要是为了支持调试”(引用它的上下文),所以你可能会说它与断言的目的有关,因此在这种情况下保护它的使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读