SSブログ

コードレビューの視点 016 [コードレビューの視点]

ボクシングに注意する

Java言語に限った話ですが、不注意なボクシング/アンボクシングに注意する必要があります。

Javaが1.4の頃からプログラミングしている人であれば、自動ボクシングが言語仕様として存在しない頃からJavaを使用していわけですから、Booleanクラスとboolean型の違いを分かっていると思います。しかし、Java SE 5.0以降からJavaでプログラミングを始めた人は違いが分かっていない人が増えてきていると思います。

5.0は、2004年9月にリリースされていますので、すでに10年以上が経過しています。そのため、基本データ型(byte, short, char, int, long, float, double)とラッパークラス(Byte、Short、Character、Integer、Long、Float、Double)の違いを分からないままプログラミングしている人がいるのではないでしょうか。そのため、コードレビューなどで、以下のようなフィールド宣言を見かけたりします。
Boolean flag = false;
この場合、どうして「booleanではなく、Booleanなのですか?」という質問に対して、質問の意図を理解できないようであれば、ボクシングを理解していないと思って間違いないでしょう。

不注意なボクシングは、使用するメモリ量の増加や性能低下になってしまいます。その仕組みについては、初心者でもしっかりと理解しておくことが必要です。ボクシングに関しては、拙著『Java 2 Standard Edition 5.0 Tiger』の第2章「ボクシング/アンボクシング」を参考にしてもらうとよいかと思います。