Boolean
以前こんなif文を見たことがある。
Boolean boo = true; if (boo == Boolean.TRUE) { ...dosomething }
if文でのbooleanは以下の用に記述するものだとずっと思っていた僕には少し衝撃的だった。
if (boo) { ...dosomething }
そこでふとある疑問にぶつかってしまった。
自問:Booleanをプリミティブ型でなくラッパークラスで使う意味があるのか。そして比較する場合にBoolean.TRUEといったstaticフィールドを使った方が有効なのだろうか。
自答:そもそも、Booleanに限らずラッパークラスを使うメリットとしてラップ対象にアクセスする便利なメソッドが使える。プリミティブ型にない「null」という状態をもつことができる、つまりオブジェクトとして扱える。こういったことからも、上記以外の目的でラッパークラスを使う意味がないように思える。
またBoolean.TRUEに関しても、「Boolean boo = true」ではAutoBoxing、「 if (boo == Boolean.TRUE)」では比較のコストが掛かってしまう。
上記のことからも、やはり「if (boo) 」の方が効率がよさそうだ。