型推論できてしまうコレクション系ユーティリティ
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 を使うかなぁ。