Java 可选混淆

标签 java

<分区>

我不明白可选值的可用性。例如,为什么不将字符串初始化为空?有人可以解释一下他们的革命性之处吗?看来他们已经隐藏在语言中一段时间​​了。

最佳答案

它们实际上已经在 J​​ava 8 中实现,所以它们实际上并没有“隐藏”很长时间。但是 Google Guava 已经有一段时间了,而且 Guava 指南提供了关于为什么要使用它们的非常有说服力的分析。

https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained

空值很糟糕,因为它们很难确定它们是否有意用于设计。可选强制开发人员解决缺少值的想法并首先检查它。

更不用说,Java 8 Optional 有一些非常强大的 lambda 方法,如 map()、flatMap() 和 filter(),它们简化了对可能为空的值的一系列转换操作,而不会冒空指针异常的风险。

除非您正在执行一些性能密集型过程,否则确实没有充分的理由在您的设计中使用 null。否则,您只是让自己遭受 NullPointerExceptions。

关于Java 可选混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29044907/

相关文章:

java - 如何获取 java 文件中的变量并将其连接到 XML 文件

java - BindResult hasErrors方法未显示

java - 如何在 Java 中构造类型?

java - 什么是NullPointerException,我该如何解决?

java - 从流中的两个列表创建分离值的映射

java - gettext() 空指针异常

java - eclipse checkstyle 错误无法初始化模块 TreeWalker - TreeWalker 不允许作为 FileLength 的父级

java - Double.MIN_VALUE 和 Double.MAX_VALUE 之间的随机 double ?

java - 在同一个类中实现多个迭代器

java - 从 cygwin 运行 jar 文件会在命令提示符下运行时抛出错误,为什么? (在窗口中)