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

2022-08-31 06:37:30

有没有与SQL函数等效的Java?也就是说,有没有办法返回几个变量的第一个非空值?COALESCE

例如:

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

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

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

但我想知道是否有任何内置的,公认的功能来实现这一点。


答案 2

没有。

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

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 ...
}

推荐