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