型推論できてしまうコレクション系ユーティリティ

Java 7に向けて提案されている型推論と同様のことが
できてしまうのが特に嬉しい


Google Collection Library で型推論
できるのでスゲー、みたいなエントリーを書いたのですが、
Seasarでも同様のことが実現できるユーティリィティが存在していました。
(コメントを頂いて初めて知ることができました。)


具体的には、s2-tiger-XXX.jar にクラスパスが通っていると、
org.seasar.framework.util.tiger.CollectionsUtilクラスの
newArrayListメソッドなどが利用可能になります。


たとえば、

List<String> listOfStrings = new ArrayList<String>();
List<Map<String, Object>> mapItems = new ArrayList<Map<String, Object>>();
List<List<Map<String, Object>>> mapItemsItems = new ArrayList<List<Map<String, Object>>>();


は、次のように書き換えることができます。

List<String> listOfStrings = CollectionsUtil.newArrayList();
List<Map<String, Object>> mapItems = CollectionsUtil.newArrayList();
List<List<Map<String, Object>>> mapItemsItems = CollectionsUtil.newArrayList();


newArrayListメソッドの中身を覗いてみましたが、
Google Collection Library のものと全く同じですね。

public static <E> ArrayList<E> newArrayList() {
    return new ArrayList<E>();
}


CollectionsUtil.newHashMap() メソッドもなんかも良いねぇ。
使うとしたら、こんな感じかな。

Map<String, ?> map1 = CollectionsUtil.newHashMap();
Map<Integer, String> map2 = CollectionsUtil.newHashMap();


型推論を使うと、ちょっと文字数が減らせるというレベルではなくて、
「宣言」と「初期化」における重複を無くすことができるのが良い。
あるべき進化だと思います。


Google Collection Library との使い分けですが、
Google Collection Libraryの方がクラス名が Arrays と短いので
嬉しいのですが、SAStrutsのようにs2-tigerに依存している
フレームワークを使う場合は、デフォルトで利用できる環境なので、
Seasar2 TigerのCollectionsUtil を使うかなぁ。