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);
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント