web-dev-qa-db-ja.com

nullの場合は空の文字列を取得します

私は自分のフィールドの文字列値を取得したい(それらは長い文字列または任意のオブジェクトのタイプにすることができます)、

フィールドがnullの場合、空の文字列を返す必要があります。グアバでこれを行いました。

nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...

しかし、ギアボックスがnullの場合、これはnullを返します! valueOf methdodが文字列「null」を返し、エラーが発生するため、空の文字列ではありません。

何か案は?

EDIt:実装が簡単なものを探している100のフィールドがあります

39
Spring

Objects.toString() (Java 7)の標準)を使用できます。

_Objects.toString(gearBox, "")

Objects.toString(id, "")
_

リンクされたドキュメントから:

public static String toString(Object o, String nullDefault)

最初の引数がnullでない場合は最初の引数でtoStringを呼び出した結果を返し、そうでない場合は2番目の引数を返します。

パラメータ:
o-オブジェクト
nullDefault-最初の引数がnullの場合に返す文字列

戻り値:
toStringでない場合は最初の引数でnullを呼び出し、それ以外の場合は2番目の引数を呼び出した結果。

関連項目:
toString(Object)

106
arshajii

Java 8の場合、オプションのアプローチを使用できます。

Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
27
Federico Piazza

Apacheコモンの使用を気にしない場合は、 StringUtils.defaultString(String str) があります。

渡された文字列を返すか、文字列がnullの場合は空の文字列( "")を返します。

"null"も削除したい場合は、次のことができます。

StringUtils.defaultString(str).replaceAll("^null$", "")

または大文字と小文字を無視する:

StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
20
Keppil

インラインnullチェックを使用する

gearBox == null ? "" : String.valueOf(gearBox);
7
Samhain

グアバを使用しているため:

Objects.firstNonNull(gearBox, "").toString();
6
renke

代替方法の場合、GuavaStrings.nullToEmpty(String)を提供します。

ソースコード

String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());

結果

0
2
Won-Sik Kim

すべてのバージョンに最適なソリューションは、この明確な例です。

実装方法

// object to Object string

public static Object str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

// Object to String 

public static String str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value.toString();
}

// String to String (without nulls)

public String str(String value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

つかいます:

str(yourString);
0
delive