Java アドバンス

Java ラッパークラス

1. Java ラッパークラスとは

Javaのラッパークラス(Wrapper Classes)は、intboolean といったプリミティブデータ型オブジェクトとして扱うための手段を提供します。

以下の表は、プリミティブ型とそれに対応するラッパークラスをまとめたものです。

プリミティブデータ型ラッパークラス
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

2. ラッパークラスが必要なケース

開発において、ラッパークラスの使用が必須となる場面があります。例えば、ArrayList などのコレクション(Collection)オブジェクトを扱う場合です。コレクションにはプリミティブ型を直接格納できず、オブジェクトのみを格納できるという制約があるためです。

2.1 コード例:ArrayList での利用

// ArrayList<int> myNumbers = new ArrayList<int>(); // 無効(コンパイルエラー)
ArrayList<Integer> myNumbers = new ArrayList<Integer>(); // 有効

3. ラッパーオブジェクトの作成

ラッパーオブジェクトを作成するには、プリミティブ型の代わりにラッパークラスを使用します。値を取得したい場合は、そのままオブジェクトを出力するだけで確認可能です。

3.1 コード例:オブジェクトの生成と出力

public class Main {
  public static void main(String[] args) {
    Integer myInt = 5;
    Double myDouble = 5.99;
    Character myChar = 'A';
    System.out.println(myInt);
    System.out.println(myDouble);
    System.out.println(myChar);
  }
}

4. ラッパーオブジェクトのメソッド活用

ラッパークラスを使用することで、オブジェクトが持つ特定のメソッドを呼び出し、情報を取得したり操作したりできるようになります。

例えば、以下のメソッドは、対応するラッパーオブジェクトからプリミティブ値を取得するために使用されます:
intValue(), byteValue(), shortValue(), longValue(), floatValue(), doubleValue(), charValue(), booleanValue()

4.1 コード例:値取得メソッドの使用

以下の例は、前述のサンプルと同様の結果を出力します。

public class Main {
  public static void main(String[] args) {
    Integer myInt = 5;
    Double myDouble = 5.99;
    Character myChar = 'A';
    System.out.println(myInt.intValue());
    System.out.println(myDouble.doubleValue());
    System.out.println(myChar.charValue());
  }
}

5. toString() メソッドによる文字列変換

もう一つ非常に便利なのが toString() メソッドです。これはラッパーオブジェクトを文字列(String)に変換するために使用されます。

以下の例では、IntegerString に変換し、String クラスの length() メソッドを使用してその「文字列」の長さを出力しています。

5.1 コード例:数値から文字列への変換

public class Main {
  public static void main(String[] args) {
    Integer myInt = 100;
    String myString = myInt.toString();
    System.out.println(myString.length());
  }
}