#概要
業務でJUnitを使ってテストをしながら、不要なソースを取り除くお仕事をしている時に
いらないnullチェックが結構あることに気づいたので、メモです。
#nullになりようがないのに、nullチェックをしている
例えばこんなメソッド。
private static double doubleMethod(double value){
String stringValue = String.valueOf(value);
if(stringValue == null){
return 0;
}
return value;
}
「String型だとnullがくるかもしれないからnullチェックしよう!」と思ったらしいソースです。
最初気づかなくて、メソッドの引数にnullを入れ、AssertEqualsでテストしようとする。。。コンパイルエラーに。
あっ、引数がdouble型だった…。
double型は「プリミティブ型」の変数なので「オブジェクトの参照を入れる代わりに何もない」ことを意味するnullは入れられません。
なので、double型で渡ってきたものには全て何らかの値が入っています。そのためそれをString型のような参照型に変換してもnullチェックは必要ありません。
ちなみにどうしても、double型で「値がない」ことを示したい場合にはjava.lang.Double.NaNを使います。
使う状況はあまりないと思いますが…。