Nullに対してAuto-Unboxingが働くと、NullPointerExceptionが発生する。
なのでラッパークラスとプリミティブで比較を行う場合は、思いがけない場所で落とし穴にハマってしまう。
例:Demo1.java
public class Demo1 {
public static void main(String[] args) {
long hoge = 128L;
Long fuga = null;
System.out.println(hoge == fuga); // NulPointerExceptionが発生する
}
}
少しでもnullが入る可能性があるのであれば、しっかりと比較する前にNullのチェックをすれば良い。
例:Demo2.java
public class Demo2 {
public static void main(String[] args) {
long hoge = 128L;
Long fuga = null;
System.out.println(fuga != null && hoge == fuga); // falseが出力される
}
}