4
3

More than 3 years have passed since last update.

[Java]Object型のnullをString型に変換

Posted at

[Java]Object型のnullをString型に変換

Object型で取得した値をString型に変換する必要があって
toString()、String.valueOf()、キャスト変換などなど
変換する方法はいくつかあるけど違いあるのかな?となり、
そして一番気になったのは取得したObject型の値がnullの場合、
エラー起きちゃったりしないかなーって思って調べてみた。
先に結果を先に載せると…

【Object型のnullをtoString(),String.valueOf(),キャスト変換で変換】
toString() String.valueOf() キャスト変換
NullPointerException 文字列"null" null



下記プログラムで確認してみると、

test.java
public static void main(String[] args) {
    Object testNull = null; // Object型null作成
    String testNullString1 = testNull.toString(); // toString()による変換
    String testNullString2 = String.valueOf(testNull); // String.valueOf()による変換
    String testNullString3 = (String) testNull; // キャスト変換

    // 各変換した値をMapに格納
    LinkedHashMap<String,String> map= new LinkedHashMap<>();
    map.put("toString()",testNullString1);
    map.put("String.valueOf()",testNullString2);
    map.put("キャスト変換",testNullString3);

    // 各変換結果を出力
    for(Map.Entry<String, String> mapString : map.entrySet() ) {
        if(mapString.getValue() == null) {
            System.out.println(mapString.getKey() +" で変換すると null になる。");
        }else if(mapString.getValue().equals("null")) {
            System.out.println(mapString.getKey() +" で変換すると 文字列の\"null\" になる。");
        }else {
            System.out.println(mapString.getKey() +" で変換すると その他の何か になる。");
        }
    }
}
実行結果1
Exception in thread "main" java.lang.NullPointerException
    at Test_CastNull.main(Test_CastNull.java:11)

toString()変換で"NullPointerException"発生。toString()は使わないのが無難のよう。
そして、上記テストコードのtoString()のとこをコメントアウトして改めて実行。

実行結果2
String.valueOf() で変換すると 文字列の"null" になる。
キャスト変換 で変換すると null になる。

となり、当たり前ながらnull(になりえるやつ)の扱いには注意が必要ですね。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3