1. ホーム
  2. java

[解決済み] Javaで最初の非NULL値を取得する方法は?

2022-04-21 19:07:18

質問

SQLの COALESCE 関数はありますか?つまり、複数の変数のうち、最初の非NULL値を返す方法はないでしょうか?

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

の最初の非NULL値を返すようなステートメントをどうにかして作りたい。 a , b および c - この場合 b または4.4です(sqlメソッドのようなもの - return 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 ...
}