long value; try { value = Long.valueOf(null); } catch (NullPointerException | NumberFormatException e) { e.printStackTrace(); value = 0; }
こんな感じでエラーを出してみると
java.lang.NumberFormatException: null at java.lang.Long.parseLong(Long.java:552) at java.lang.Long.valueOf(Long.java:803) at jp.co.sample.main(sample.java:6)
というエラーが出たもちろんnullは変換できないからエラーが返るんだけど
ここで見て欲しいのは
at java.lang.Long.parseLong(Long.java:552) at java.lang.Long.valueOf(Long.java:803)
ちなみにLong#parseLongの返り値はlong
Long#valueOfの返り値はLong
つまりparseLong(long値)→valueOf(Long値)→アンボクシング(long値)
・・・無駄なことしてるじゃん!!
ということで
long value; try { value = Long.parseLong(null); } catch (NullPointerException | NumberFormatException e) { e.printStackTrace(); value = 0; }
無駄は減りました
java.lang.NumberFormatException: null at java.lang.Long.parseLong(Long.java:552) at java.lang.Long.parseLong(Long.java:631) at jp.co.sample.main(sample.java:7)