大概问过,但是找不到。

我以以下形式写了很多声明:

if (bar.getFoo() != null) {
    this.foo = bar.getFoo();
}


我想到了三元运算符,但是我认为这并没有使它更好:

this.foo = bar.getFoo() != null ? bar.getFoo() : this.foo;


我的主要问题是在两种情况下我都必须编写两次bar.getFoo()。当然,我可以编写一个解决此问题的辅助方法,但是我想知道是否还有更优雅的解决方案。

不同于:Avoiding != null statements,因为该问题不涉及为值赋值为null的值。

最佳答案

如可选javadoc中所述:

A container object which may or may not contain a non-null value.

话虽如此,这是处理空检查的最“ java-8”方式。这是Java Optional引入的初衷之一。让getFoo返回Optional,您可以只使用Optional上的ifPresent函数,您就可以开始了。

08-26 06:57