Java言語のAutoboxing・Auto-Unboxing
JDK5から基本データ型とラッパークラスのデータ型を相互に自動変換してくれる Autoboxing・Auto-Unboxing という機能が使えるようになっていたらしい。
int a = 1; Integer b = 2; // こういうのOK int c = a + b; // b (Integer) を自動的に int に変換してくれる System.out.println(c); // => 3 Integer d = a + b; // a (int) を自動的に Integer に変換してくれる System.out.println(d); // => 3 ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(1); // ← int を Integer に変換しなくて良い
つまり、基本データ型かどうか気にしないでコレクションフレームワークに突っ込んでいいようだ。
だからといって、基本データ型に対してラッパークラスのメソッドを使うことはできない。
int a = 0; Integer b = 0; //System.out.println(a.getClass()); // これはコンパイルエラー System.out.println(b.getClass()); // => "class java.lang.Integer"
ラッパークラスのデータ型はたぶん基本データ型と思って扱っても問題ない。
Integer a = 0;
int[] array = {0,1,2,3};
System.out.println(array[a]); // => 0, 配列の添え字OK
a++; // これもOK
System.out.println(array[a]); // => 1
ということで、もはや基本データ型とかいらなくね?っていう話。
Comment