如何获取Java中的第一个非空值?

2019年9月4日 2点热度 0条评论

Java是否等效于SQL的COALESCE函数?也就是说,有什么方法可以返回多个变量的第一个非空值?

例如

Double a = null;
Double b = 4.4;
Double c = null;

我想以某种方式返回一条返回
a
b
c的第一个非空值的语句-在这种情况下,它将返回
b或4.4。 (类似于sql方法-返回
COALESCE(a,b,c))。我知道我可以使用类似的方法来明确地做到这一点:

return a != null ? a : (b != null ? b : c)

但是我想知道是否有内置的,可接受的功能来完成此任务。

解决方案如下:

不,没有。

您可以获得的最接近的是:

public static <T> T coalesce(T ...items) {
    for(T i : items) if(i != null) return i;
    return null;
}

出于有效的原因,您可以按以下方式处理常见情况:

public static <T> T coalesce(T a, T b) {
    return a == null ? b : a;
}
public static <T> T coalesce(T a, T b, T c) {
    return a != null ? a : (b != null ? b : c);
}
public static <T> T coalesce(T a, T b, T c, T d) {
    return ...
}