Java SE 5.0はEoDに力を入れてるとのことなので、チェックしてみました。EoDとはEasy of Developmentで*1、要するに簡素化で工数を減らしましょうってことです。
- Autoboxing/Unboxing
基本型をラッパ型に自動変換してくれます。Integer.valueOf(1);みたいなことをしなくてよくなったわけです。これは非常に便利になりましたね。
Object obj = 1; System.out.println("Value:" + obj); System.out.println("Class:" + obj.getClass());
- 拡張for構文
perlで言うforeachです。添字を隠せるので、可読性が増しますし、記述しやすいです。
String[] strings = {"test1", "test2", "test3", }; for(String str : strings){ System.out.println("args:" + str); }
- Generic型
C++のSTLにインスパイアされた機能です。今まで汎用的な型を操作するのにObject型で定義してキャストすると言う非常にかっこわるいことをしなければならなかったわけですが、この機能でキャストを隠せます。
class GTest <T>{ void printSomething(T obj){ System.out.println("something:" + obj); } } GTest<String> gt = new GTest<String>(); gt.printSomething("TEST"); // gt.printSomething(1); /* コンパイルエラー */
一昔前より、java界はかなり面白くなってますね( ̄皿 ̄)♪ 話題のアノテーションは未だに未チェックです。もうちょっとしたら調べます。