【发布时间】:2017-07-06 05:49:53
【问题描述】:
我最近看到blog post (tweeted by @java) 表明以下代码变得越来越普遍:
Optional.ofNullable(i).ifPresent(x -> doBlah(x));
代替:
if (i != null) {
doBlah(i);
}
在这种情况下使用 Optional 对我来说似乎很尴尬,甚至忽略了变量的命名 - 后者更容易阅读并且更适合用例(处理空值)。我相信这也能更好地捕捉语义——我可能来自不符合 Optional 试图捕捉的语义的代码(如 possible duplicate 和 this Oracle article 中所述)。
我没有看到,但是有一个好的语义原因更喜欢 Optional.isNullable 方法(忽略它可能产生的性能影响,具体取决于它的使用方式)?
【问题讨论】:
-
orElse(x->doBla(x))不正确,除非i恰好是一个 lambda。 -
是的,对于您引用的案例,我会坚持使用旧的
if声明。但你可以做一些neat tricks with filtering and mapping optionals -
IMO:可选不应以这种方式使用。如果它变得越来越普遍,好吧,如果你所有的朋友都从桥上跳下来......