世界の中心でnullを叫ぶ
人類が初めて出会うExceptionはNullPointerExceptionだと思う。 nullは諸悪の根源。この世にあってはならない存在。抹殺しなければ。(過激派)
nullはあらゆる型にセットできますが、特にString型のnullには注意が必要だと思っています。
例えば単純な結合の場合、通常は以下のようになります。
String love = "愛"; System.out.println("世界の中心で" + love + "を叫ぶ"); // "世界の中心で愛を叫ぶ"
一方で、変数loveがnullの場合、以下のようになります。
String love = null; System.out.println("世界の中心で" + love + "を叫ぶ"); // "世界の中心でnullを叫ぶ"
変数loveには文字列ではないnullをセットしたはずなのに、文字列結合を行うと文字列"null"として結合されてしまいます。なんでやねん!
Java以外の言語ではどうなるのか見てみます。
PHP
$love = null; echo("世界の中心で" . $love . "を叫ぶ"); // "世界の中心でを叫ぶ"
C#
string love = null; System.Console.WriteLine("世界の中心で" + love + "を叫ぶ"); // "世界の中心でを叫ぶ"
VB
Dim love As String = Nothing Console.WriteLine ("世界の中心で" & love & "を叫ぶ") // "世界の中心でを叫ぶ"
言語によって文字列型nullの単純結合の結果が違うみたいです。Javaは“愛”がないと代わりに「null」を叫んでしまうんですね。
今回は単純な結合("+"とか"&"で繋げる)ですが、各言語には文字列結合の関数が用意されているので、用途に合わせて使ってきたいですね。
ぶっちゃけnullは全否定できません。日付型とか特定の日付をセットしたくない場合にnullがなかったら困るし。
リンク