1. ホーム

[解決済み] JavaでNULLを使った型キャストで例外が発生しない件

2022-04-06 18:26:03

質問

String x = (String) null;

なぜこの文には例外がないのでしょうか?

String x = null;
System.out.println(x);

印刷されます null . しかし .toString() メソッドはヌルポインター例外を投げるべきです。

解決方法は?

キャストすることができます。 null をどのような参照型にも例外なく適用できます。

println メソッドは、最初にオブジェクトが NULL かどうかをチェックするため、NULL ポインタを投げることはありません。もし null ならば、単に文字列 "null" . そうでない場合は toString メソッドを呼び出すことができます。

詳細を追加する。 内部的にprintメソッドは String.valueOf(object) メソッドを入力オブジェクトに対して実行します。そして、その中の valueOf このチェックにより、ヌルポインター例外を回避することができます。

return (obj == null) ? "null" : obj.toString();

NULLオブジェクトのメソッドを呼び出すと、特別なケースでない限り、NULLポインタ例外が発生します。