Java 界隈では比較的良く知られていると思われるオートボクシングの罠。そして見事にハマッたので記録を残しておく。
再現させるソースコードは下記の通り。
public static final int HOGE=1; public static void main(String[] args) { Integer v = null; if (HOGE == v) { System.out.println("hoge"); } }
if (HOGE == v) { の行で NullPointerException が発生する。v が null なんでそりゃそっすよね、って話なわけですが、コードだけ見てると意外と気付けないのがツライ。
でまぁ、ぐぐってみるとオートボクシングの落とし穴は NullPointerException だけではなく、比較するときとかにもごにょごにょとあるらしく。参考:Java 5 のオートボクシング・アンボクシングの落とし穴 - 集中力なら売り切れたよ