Autoboxing/Unboxing

Autoboxing/Unboxing機能もあまり大きな拡張ではありません。プリミティブ型とそのwapperクラス(java.langにあります)との相互変換を自動的にやってくれる機能です。とはいっても、wapperクラスのオブジェクトを作ったり、そこから値を取り出したりという処理は明示的にではないにせよ行われるので、パフォーマンス上のデメリットが無くなるわけではありません。

例えば従来Collectionでプリミティブ型のデータを管理しようとすると、

	List list = new ArrayList();
	list.add(new Integer(1234));
	list.add(new Integer(4321));
の様にwapperクラスでラップしていたわけですが、これを、
	List list = new ArrayList();
	list.add(1234);
	list.add(4321);
と書けるようになりました。こっちがAutoboxing機能(プリミティブ型の値をIntegerというオブジェクトの入れ物に詰めた)です。で、このリストからIntegerオブジェクトを取り出して、intとして計算で使う場合、これまでは、
	Integer val = (Integer) list.get(0);
	int n = val.intValue();
としなければならなかった訳ですが、これが、
	int n = list.get(0);
という風にかけるようになりました。こっちがUnboxing機能(Integerという入れ物を取り外してintとしての値を取り出した)です。

プリミティブ型で管理している情報をCollectionを使って処理をしなければならなかった、というような状況での表記が少しだけ簡単になる、というのがメリットでしょうか。


JDK5.0  人材開発室 PoisonSoft