<分区>
我不明白可选值的可用性。例如,为什么不将字符串初始化为空?有人可以解释一下他们的革命性之处吗?看来他们已经隐藏在语言中一段时间了。
标签 java
<分区>
我不明白可选值的可用性。例如,为什么不将字符串初始化为空?有人可以解释一下他们的革命性之处吗?看来他们已经隐藏在语言中一段时间了。
最佳答案
它们实际上已经在 Java 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/