JavaでString.valueOfにnullを渡すと”null”という文字列が戻る

javaJava

JavaでString.valueOfにnullを渡すと”null”という文字列が戻る

JavaでString.valueOfにnullが入ったオブジェクトを渡すと”null”という文字列が戻ります。

String.valueOfのメソッド内は以下のようになっています。

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

objがnullなら”null”を返すという意味不明なことになっていますね。

ようするにnullも文字列で”null”にしてしまいますので注意が必要です。

String.valueOfを使用する時はnullを考慮する必要があります。

Java7からObjects.toString()で解決する

Objects.toString(第一引数,第二引数);

このメソッドの戻り値はString型で、第一引数は何でもよいです。nullの場合は、第二引数が返ってきます。nullでない場合は第一引数をString型にして返します。

このメソッドを使用することにより”null”という文字列を返さないようにすることができます。

String str = Objects.toString(1, null);
System.out.println(str); // 1というString型が返る
str = Objects.toString(null, null);
System.out.println(str); // nullが返る

String.valueOfの代わりとして使えます。toString()メソッドはヌルポで落ちる可能性がありますし、valueOfは”null”になるので、Objects.toString()がお勧めです。

ちなみにですが以下のように直接nullを引数に渡すとヌルポが発生しますのでご注意ください。

String.valueOf(null);

コメント

タイトルとURLをコピーしました