我不了解期权的可用性。例如,为什么不将字符串初始化为null?有人可以解释一下它们的革命性吗?他们似乎已经在语言中隐藏了一段时间。
答案 0 :(得分:0)
它们实际上已经在Java 8中实现,所以它们实际上已经无法隐藏"很长。但谷歌番石榴已经有一段时间了,而番石榴指南提供了一个非常引人注目的分析,为什么要使用它们。
https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained
Nulls很糟糕,因为很难确定它们是否故意用于设计。可选项强制开发人员解决缺少值的想法并首先检查它。
更不用说,Java 8 Optional有一些非常强大的lambda方法,比如map(),flatMap()和filter(),它们可以在一个可能为空的值上简化一系列变换操作,而不会有空指针异常的风险。
除非您正在执行一些性能密集型过程,否则在您的设计中使用null是没有充分理由的。否则你只是让自己接受NullPointerExceptions。