最近我看到一篇博客文章(由@java推特),建议以下代码正在变得越来越普遍:
Optional.ofNullable(i).ifPresent(x -> doBlah(x));
改为:
if (i != null) {
doBlah(i);
}
在这种情况下,Optional的使用对我来说似乎非常笨拙,即使忽略变量的命名 - 后者更易于阅读并且更符合用例(处理空值)。我相信这也更好地捕捉了语义 - i 可能来自不遵循Optional试图捕捉的语义的代码(如可能的重复项和此Oracle文章中所描述的那样)。
我没有看到任何一个好的语义原因可以优先选择Optional.isNullable方法(忽略它可能具有的性能影响,这取决于其如何使用)吗?
i
为空时调用doBla
(尽管我认为它不正确)。而第二段代码则在i
不为空时调用doBla
。 - khelwood