続・型推論できてしまうコレクション系ユーティリティ
koichik 2008/05/16 19:30 > クラス名が Arrays と短い
import static ...CollectionsUtil.*;
Eclipse で [Window]-[Preferences] の [Java]-[Editor]-[Content Assist]-[Favorites] に CollectionsUtil を登録しておけば快適.
先ほどのエントリに対して、CollectionsUtil の開発者である id:koichik さんからコメントを頂きました。
id:koichik さんのコメントに習うと、たとえば、
List<String> listOfStrings = new ArrayList<String>(); Map<Integer, String> map = new HashMap<Integer, String>(); List<Map<String, Object>> mapItems = new ArrayList<Map<String, Object>>();
は『S2 TigerのCollectionsUtil』と『Java5から導入されたstatic import』を使って、
次のように書き換えることができます。
List<String> listOfStrings = newArrayList(); Map<Integer, String> map = newHashMap(); List<Map<String, Object>> mapItems = newArrayList();
どーですか?
タイプセーフなのに、簡潔に記述できて、可読性が高い。
自分的には、かなりイケてると思います。
(まるでコンストラクタを使って new してるみたい。)
今まで自分は、static importはEclipseと相性が悪い(メソッド補完が効かない)
という理由でやや敬遠していました。
でも、id:koichik さん のコメントを通じて教えて頂いた方法だと、
かなりいい感じで使えますね。
せっかくなので、Eclipseの設定方法を詳しく記述しておく。
Eclipse & static import で CollectionsUtilを快適に使う
まずは、Eclipseの設定。
次の画像のように、Eclipseで [Window]-[Preferences] の
[Java]-[Editor]-[Content Assist]-[Favorites] に CollectionsUtil を登録します。
※ ちなみに、上記のEclipseのバージョンは 3.3.1.1
上記の設定を済ませておくと、
たとえば、以下のコードを入力する場合に、
List<Map<String, Object>> mapItems = newArrayList();
下図のように、= (イコール)よりも後で Ctrl + Space を押すことで
メソッド補完してくれるようになります。
しかも、メソッド補完した後には、自動的に以下のようなstatic import 文を書いてくれる。
import static org.seasar.framework.util.tiger.CollectionsUtil.newArrayList;
ソースコードの「読み易さ」と「書き易さ」が両立できるって、
素晴らしいことだと思います。