java - 使用 Java 8 避免在 lambda 内部使用 null 的最佳方法是什么?

标签 java lambda java-8

我有这段代码,我正在尝试找出使用 Java 8 避免空指针异常的最佳方法是什么?

promotion.forEach(item ->
    item.getDiscount().getPromotions().forEach(promotion -> {
        // logic code here
    })
);

最佳答案

避免 NullPointerExceptions 的最佳方法是避免空值。在您的示例中,请确保所有方法都不会返回 null。

除了返回 null,您还有多种选择:

  • 抛出异常。例如,如果方法的输入导致除以零,您可以抛出异常而不是返回 null。
  • 返回一个空的可选值。例如,返回 String 的方法可以更改为返回Optional。当没有 String 可以返回时,返回Optional.empty()
  • 返回一个空的Collection(例如当结果类型是List时,如果没有找到结果则返回一个空的List,而不是返回null)
  • 返回能够反射(reflect)结果的自定义结果类型。例如,在进行验证时,您可以返回代表成功/失败和错误消息的 ValidationResult,而不是在没有错误时返回 null 错误消息

关于java - 使用 Java 8 避免在 lambda 内部使用 null 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109363/

相关文章:

java - 使用 lambda 表达式反转字符串中的单词

java - Java 8 中 reduce 的累加器是否允许修改其参数?

java - Webdriver/Selenium 2.0 API 不适用于 Firefox 4

python - 在 python 中的子列表上使用 map 和 filter 函数

java - 如何在java中的点击事件中获取按钮名称

Java 8 嵌套 lambda 中断编译器

c# - Lambda 表达式常用语法

Java Lambda 和闭包

java - Eclipse 中的 Maven 启动配置

javascript - 设置 highchart 中 y 轴的 double 最小值和最大值