【问题标题】:Optional.ofNullable() on List列表上的 Optional.ofNullable()
【发布时间】:2023-02-04 01:14:41
【问题描述】:

我需要有关 Java 8+ 可选概念之一的帮助。我一直看到开发人员在列表对象上使用 Optional.ofNullable,这是不正确的,我不确定它是如何在没有错误/缺陷的情况下完美运行的。代码是这样的

注意:列表对象是通过从存储库层进行数据库调用来捕获的。

Optional.ofNullable(list) .orElse(Collections.emptyList()) .stream().forEach(x-> { ------ ------};);

如果没有元素,列表就不能是空的 null ([]) 那么,它如何正确处理 Optional.ofNullable() 呢?我尝试通过在 forEach 中添加打印语句来测试虚拟代码它会在两种情况下打印(列表为空以及不为空)

帮助将不胜感激

【问题讨论】:

  • 请用谷歌搜索你的问题,你的问题可能会破坏你的声誉,stackoverflow 版主会删除它,因为这不是错误问题。
  • 事实上,该列表可以是一个“文字空值”(例如,变量list 可以指向一个空值)。至于你问题的其他部分,我听不懂。为什么您对这段代码正常工作感到困惑?我自己不会那样写,但我认为它没有其他逻辑问题。
  • 这段代码的主要思想是遍历列表,同时在给定列表为空时处理情况。当给定列表为空时 - 使用空列表只会导致没有进一步的操作而不是空指针异常

标签: java java-8


【解决方案1】:

如果列表为 null(可能是),它会创建一个空列表并打印其内容,该内容将为空(但不会抛出异常)。如果它不为空,它将打印其内容。

List<String> list = null;
 // prints empty list
 Optional.ofNullable(list).orElse(Collections.emptyList()).stream()
         .forEach(System.out::println);
 list = List.of("A", "B", "C");
 // print the contents.
 Optional.ofNullable(list).orElse(Collections.emptyList()).stream()
         .forEach(System.out::println);

印刷

A
B
C

我认为这个想法是通过处理一个空集合来处理一个空列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多