プリミティブラッパークラス

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

プリミティブラッパークラス (: primitive wrapper class) とは、Javaにおける、プリミティブ型をラップするjava.lang パッケージが提供する8つのクラスのこと。プリミティブラッパークラスは不変であり、オブジェクト指向メソッドを提供する。

Javaにおけるプリミティブ型はオブジェクト型ではなく、そのままではオブジェクトとして扱うことができない。プリミティブラッパークラスはプリミティブ型の値に対応したObjectが必要なときにそれを表すものとして使われている。ラッパークラスはjava.utilパッケージにあるCollectionクラス群、java.lang.reflectパッケージにあるリフレクション用クラス群とともに広く使われている。

プリミティブ型の値からラッパーオブジェクトに変換することを「ボックス化」(ボクシング)、ラッパーオブジェクトからプリミティブ型の値に変換することを「ボックス化解除」(アンボクシング)と呼ぶ。

Java SE 5.0からは、ラッパーオブジェクトとプリミティブ型の値との間の暗黙の変換機能として、プリミティブ型の値からラッパーオブジェクトに暗黙変換できる「自動ボックス化」(オートボクシング)と、ラッパーオブジェクトからプリミティブ型の値に暗黙変換できる「自動ボックス化解除」(オートアンボクシング)が導入された。

プリミティブラッパークラスとそれらに相当するプリミティブ型:

プリミティブ型 ラッパークラス
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

ラッパークラスByte, Short, Integer, Long, Float, Double はすべてNumberサブクラスである。

Javaには組み込みの符号無し整数型は存在しないが、プリミティブラッパークラスには、ビット列を符号無し整数とみなして扱うためのメソッドがいくつか用意されている(Integer.compareUnsigned(int, int)Long.compareUnsigned(long, long)はJava 8以降、Byte.compareUnsigned(byte, byte)Short.compareUnsigned(short, short)はJava 9以降)。

Void[編集]

ラッパークラスではないが、Voidクラスは それが戻り値の型がvoidであるオブジェクト表現を提供するという点でよく似ている。 Voidクラスは Java予約語 void を表現するClassオブジェクトへの参照を保持するためにjava.lang.reflect APIによって使われるインスタンス化できないプレースホルダークラスである。

アトミッククラス[編集]

Java 5.0では、java.util.concurrent.atomicパッケージにラッパークラスが新たに追加された。 これらのクラスは可変であり、正規のラッパークラスの代替としては使うことができない。 その代わりに、それらは加算、インクリメント、代入についての不可分操作を提供する。

アトミッククラスとそれらに相当するプリミティブ型:

プリミティブ型 ラッパークラス
int AtomicInteger
long AtomicLong
boolean AtomicBoolean
V AtomicReference<V>

クラスAtomicIntegerAtomicLongNumberクラスのサブクラスである。AtomicReferenceクラスはオブジェクト参照の型を特定する型パラメータ Vを持つことができる。 (関連項目 "Java Generics" Javaにおける型パラメータの説明。) オブジェクト型がプリミティブ型でない場合でも、オブジェクトの参照はプリミティブ型であることに注意すること。

関連項目[編集]