ボックス化
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/02 09:17 UTC 版)
自動ボックス化
前述のボックス化・ボックス化解除の操作を暗黙的に行なうことを、自動ボックス化(autoboxing)[5]および自動ボックス化解除(auto-unboxing)と呼ぶ。
自動ボックス化はJava SE 5 (J2SE 5.0, Java 1.5) で追加され、JSR 201で宣言されている。自動ボックス化がサポートされた処理系では、対となる逆の操作、自動ボックス化解除もサポートされる。
以下のコードは自動ボックス化・自動ボックス化解除の例である。
int iv1 = 100;
Integer iw = iv1; // ボックス化。
int iv2 = iw; // ボックス化解除。
Javaコンパイラによって、プリミティブ型とプリミティブラッパークラス間の暗黙変換は、前述のようなボックス化・ボックス化解除を実行するコードに展開される。
.NET
.NETにおいては、概念(型システム)上、値型も含めすべての型はSystem.Object
型(これは参照型である)の派生型であるため、この型への暗黙的なアップキャストを行なうことができる。すべての値型はSystem.ValueType
クラスから派生し、その基底クラスであるSystem.Object
への暗黙的なボックス化が可能となっている(Javaの自動ボックス化に相当)。一方、ボックス化解除はダウンキャストにより明示的に実行する必要がある。
C#の例を示す。
int iv1 = 100;
object iw = iv1; // 暗黙的なボックス化。
int iv2 = (int)iw; // ボックス化解除。
明示的なボックス化も可能ではあるが、通例使われない[6]。
object iw = (object)iv1; // 明示的なボックス化。
- ^ カナ表記で「ボクシング」とも。
- ^ カナ表記で「アンボクシング」とも。
- ^ 「原始型」とも。
- ^ Java 9以降は
@Deprecated
すなわち廃止予定としてマークされている。 - ^ カナ表記で「オートボクシング」とも。
- ^ ボックス化とボックス化解除 (C# プログラミング ガイド) | Microsoft Docs
- ^ Autoboxing | Oracle Java Documentaiton
- 1 ボックス化とは
- 2 ボックス化の概要
- 3 自動ボックス化
- 4 コレクションの例
- 5 関連項目
固有名詞の分類
- ボックス化のページへのリンク