在 java-8 中处理或避免 NPE 的最佳方法是啥?

Posted

技术标签:

【中文标题】在 java-8 中处理或避免 NPE 的最佳方法是啥?【英文标题】:The best way to handle or avoid NPE in java-8?在 java-8 中处理或避免 NPE 的最佳方法是什么? 【发布时间】:2016-11-12 06:00:08 【问题描述】:

如何在 java-8 中避免/处理更清晰、更安全的NullPointerException

Optional类除外:

Optional emptyOptional = Optional.empty();

emptyOptional.ifPresent(System.out::println);

if (emptyOptional.isPresent())
     System.out.println(emptyOptional.get());

java-8还有其他方法吗?

【问题讨论】:

除了 Optional 之外,没有什么比通常的 == null!= null 检查更多的了。尽可能避免空值。如果你真的很关心 null-safety 并且愿意,那么请使用 Kotlin,它具有一流的 null-safety。 你用的是哪个IDEA? 【参考方案1】:

在 java 8 中避免!= null 语句的唯一特性是可选的,如果你想使用不同的模式,你有几个选择:

    Null Object Pattern 基于注释,例如JetBrains @NotNull/@Nullable。更多详情请查看Java @NotNull

此外,您可以在 SOF 中查看有关 avoiding-null-statements 的答案

【讨论】:

还有一个更新的空注释列表:***.com/questions/35892063/…。在该线程中,您会找到 MErnst(JSR 308 规范负责人)的答案,强调“旧”声明注释和 TYPE_USE 注释(Java 8)之间的显着差异——由于问题特别提到了 Java 8,因此值得注意的是TYPE_USE 注释允许更完整的分析。

以上是关于在 java-8 中处理或避免 NPE 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何更好地使用Java 8的Optional

如何更好地使用Java 8的Optional

函数式编程一种基于Optional的优雅处理NPE的方法

使用 Nuxt 处理登录\注销按钮以避免闪烁内容的最佳方法是啥?

在 Node.JS 中应该避免循环还是有特殊的方法来处理它们?

Java 8实战 (笔记)第一章