现在我们有了Guava的Optional
和构建器模式。每本书/博客都说避免空值。在处理明确需要它的遗留代码或协议时,我们必须使用它们。但是,当它有用或者它是最佳选择时,还有其他用例吗?
答案 0 :(得分:3)
对未初始化的变量很有用。它是否有用作为有效值是另一个问题,取决于您的编程模型。例如,如果您的模型中的目标是生成很少或没有垃圾,则Optional不是一个选项,null
不会产生垃圾。
在极端情况下,您的目标可能是每天生产1 GB或每天1 GB的垃圾。这样您就可以在没有次要收藏的情况下运行一天或一周。
在“普通”Java编程中,缺少使用其中一个包装器可能是由于懒惰。这是一种更多的努力,因为我没有意识到收益(因为我从不打算将NPE编写到我的代码中)。有用的工具就像你的IDE为你填写这段代码一样。例如IntelliJ将告诉您是否有值null
并且cn引入运行时检查。