Java SE 7に向けて。
5年ぶりに言語仕様が改変される予定のJava。
ただ、Java SE 6の機能すら知らないので少しずつ勉強。
僕のJavaの知識はJ2SE5.0で足踏み中。。(SunのSJC-P 5.0の取得は去年;;)
なのでまずはJ2SE5.0の復習から。
J2SE1.4以前の書き方。(Javaのバージョン表記はややこしい)
import java.util.ArrayList;
import java.util.Iterator;
public class A{
public static void main(String[] args) {
ArrayList arraylist = new ArrayList();
arraylist.add(new Integer(1));
arraylist.add(new Integer(2));
arraylist.add(new Integer(3));
int i;
for (int count = 0; count < 3; count++) {
i = ((Integer)arraylist.get(count)).intValue();
System.out.println(i);
}
}
}
J2SE5.0の機能を使って書き換えると、
(GenericsとAutoBoxingと拡張for文)
import java.util.ArrayList;
public class B {
public static void main(String[] args) {
ArrayList<Integer> arraylist = new ArrayList<Integer>();
arraylist.add(1);
arraylist.add(2);
arraylist.add(3);
for (int integer : arraylist) {
System.out.println(integer);
}
}
}
ArrayListからArrayList<integer>のように変更されている。(Generics)
これでArrayListで扱うオブジェクトはIntegerに限定されることになり、
キャスティングの記述は省略できるようになる。
次に、Integerを入れるArrayListに、.add(1)と普通にint型を入れてる。
これがオートボクシング機能で、int入れる時に自動的にラッパークラス(Integer)に変換する。
拡張for文は素直に便利。
他にもJ2SE5.0からの新機能はあるけど、主なものはこの3つ。
Java SE 7からはRubyやPythonのサポートも強力になるとのこと。
たのしみ。