valueOfとparseと無駄遣い

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)
スポンサーリンク

シェアする

フォローする

スポンサーリンク