8つの基本型に対応した 8つのクラスが存在しています。ラッパークラスと呼ばれます。
| 基本型 | ラッパークラス |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| char | Character |
| float | Float |
| double | Double |
ジェネリクスには基本型を指定できません、ラッパークラスを指定します。しかし、値の代入や取り出しの際には、ラッパークラスを意識しないでソースコードを記述できます。これをオートボクシングと呼びます。
ソースコードは以下の通り。
V601/MySystem.java(ライブラリをそのまま利用します)
V601/V601.java
import java.util.ArrayList;
import java.util.List;
/**
* オートボクシングとラッパークラス。
*/
public class V601 {
/**
* メインメソッド。
* @param args 引数
*/
public static void main(String[] args) {
// List<int>ではなく List<Integer>
List<Integer> months = new ArrayList<>();
// ラッパークラスへの変換が行われている
months.add(31);
months.add(28);
months.add(31);
months.add(30);
months.add(31);
months.add(30);
months.add(31);
months.add(31);
months.add(30);
months.add(31);
months.add(30);
months.add(31);
int month = MySystem.in.getInt("月を入力してください");
if(month < 1 || month > 12) {
System.out.println("入力した値は異常です。");
} else {
// ラッパークラスからの変換が行われている
int day = months.get(month - 1);
System.out.println("うるう年ではない場合");
System.out.println(month + "月は " + day + "日間あります。");
}
}
}
実行結果の例は以下の通り。
月を入力してください? 6 うるう年ではない場合 6月は 30日間あります。