私は自分のフィールドの文字列値を取得したい(それらは長い文字列または任意のオブジェクトのタイプにすることができます)、
フィールドがnullの場合、空の文字列を返す必要があります。グアバでこれを行いました。
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
しかし、ギアボックスがnullの場合、これはnullを返します! valueOf methdodが文字列「null」を返し、エラーが発生するため、空の文字列ではありません。
何か案は?
EDIt:実装が簡単なものを探している100のフィールドがあります
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)
Java 8の場合、オプションのアプローチを使用できます。
Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
Apacheコモンの使用を気にしない場合は、 StringUtils.defaultString(String str)
があります。
渡された文字列を返すか、文字列がnullの場合は空の文字列( "")を返します。
"null"
も削除したい場合は、次のことができます。
StringUtils.defaultString(str).replaceAll("^null$", "")
または大文字と小文字を無視する:
StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
インラインnullチェックを使用する
gearBox == null ? "" : String.valueOf(gearBox);
グアバを使用しているため:
Objects.firstNonNull(gearBox, "").toString();
代替方法の場合、GuavaはStrings.nullToEmpty(String)
を提供します。
ソースコード
String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());
結果
0
すべてのバージョンに最適なソリューションは、この明確な例です。
実装方法
// 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);