是否有可能在Java中做类似于下面代码的事情
int y = x ?? -1;
更多关于??
是否有可能在Java中做类似于下面代码的事情
int y = x ?? -1;
更多关于??
遗憾的是,没有。你能做的最接近的是:
int y = (x != null) ? x : -1;
当然,如果您觉得有必要,可以将其打包到库方法中(不太可能减少太多长度),但在语法级别上,没有更简洁的方法了。
Guava有一个类似的方法,叫做MoreObjects.firstNonNull(T,T)。
Integer x = ...
int y = MoreObjects.firstNonNull(x, -1);
当你有一些东西时,这更有帮助
int y = firstNonNull(calculateNullableValue(), -1);
因为它可以避免两次调用可能代价高昂的方法,也可以在代码中声明一个局部变量来引用两次。
简单的回答:没有
最好的方法是创建一个静态实用程序方法(这样就可以使用import static语法导入它)
public static <T> T coalesce(T one, T two)
{
return one != null ? one : two;
}
上面的方法等价于Guava的@ColinD的firstNonNull方法,但它可以更广泛地扩展
public static <T> T coalesce(T... params)
{
for (T param : params)
if (param != null)
return param;
return null;
}
来自Apache Commons Lang 3的ObjectUtils.firstNonNull(T…)是另一个选项。我更喜欢这个方法,因为与Guava不同,这个方法不会抛出异常。它将简单地返回null;