Java SE 7に向けて。
5年ぶりに言語仕様が改変される予定のJava。
ただ、Java SE 6の機能すら知らないので少しずつ勉強。
僕のJavaの知識はJ2SE5.0で足踏み中。。(SunのSJC-P 5.0の取得は去年;;)
なのでまずはJ2SE5.0の復習から。
J2SE1.4以前の書き方。(Javaのバージョン表記はややこしい)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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文)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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のサポートも強力になるとのこと。
たのしみ。