在C#中是否有相当于空合并运算符(??)的Java?

是否可以在Java中执行类似于以下代码的功能

int y = x ?? -1;

更多关于 ??


答案 1

可悲的是-没有。您可以做的最接近的是:

int y = (x != null) ? x : -1;

当然,如果你觉得有必要,你可以用库方法来包装它(它不太可能减少太多的长度),但是在语法级别,没有更简洁的东西可用。


答案 2

Guava有一个类似方法,称为MoreObjects.firstNonNull(T,T)

Integer x = ...
int y = MoreObjects.firstNonNull(x, -1);

当您有类似的东西时,这更有用

int y = firstNonNull(calculateNullableValue(), -1);

因为它使您不必调用两次可能昂贵的方法,也可以避免在代码中声明局部变量以引用两次。