【发布时间】:2014-04-17 14:44:04
【问题描述】:
我已经阅读了一些关于 Java 8 即将推出的 Optional 类型的文章,我试图理解为什么人们一直认为它不如 Scala 的 Option 强大。据我所知:
- 使用 Java 8 lambda 的高阶函数,例如 map 和 filter。
- 一元平面地图
- 通过 getOrElse 类型函数实现短路。
我错过了什么?
【问题讨论】:
-
"...worse than" - 这听起来像是一个主观的讨论。但是,我还没有做任何事情。让我们看看这是怎么回事。
-
任何使用“强大”这个词的帖子都不值得你去好奇。
-
另外,您仍然可以拥有
null。Optional/Maybe的全部意义在于引用不能是null,因此允许它们(Java 必须,为了向后兼容)已经减少了一些好处。 -
@AlexeyRomanov 除了 Scala 标准库在很大程度上不设计为使用 null,因此惯用的 Scala 代码仅在涉及 Java 互操作时处理 null。而在惯用的 Java 中,一旦
Optional到达......您仍然必须明确检查所有内容是否为 null,因为您的大多数值可能来自不喜欢Optional而不是 null 的代码。