Java言語で固定要素のListを初期化する際のイディオム
Generics(総称型)のプログラミングはJava言語(バージョン5以降)で最も習得が困難な文法*1の一つです。私自身、時々どうやって文法エラーを修正すべきか悩むこともあるくらいで、実際かなり複雑です。Genericsの導入は賛否両論なので、実際Javaに導入したのは間違いだったという議論もある一方で、静的な型安全性を重視するプログラマーもいます。
好き嫌いはともかくとして、Javaプログラマーとしては、一度きちんとGenericsの正しい使い方(=使い勝手のよい総称型やメソッドの正しい定義方法)について勉強しておいてもよいと思います。

Java Generics and Collections: Speed Up the Java Development Process
- 作者: Maurice Naftalin,Philip Wadler
- 出版社/メーカー: O'Reilly Media
- 発売日: 2006/10/27
- メディア: ペーパーバック
- 購入: 5人 クリック: 39回
- この商品を含むブログ (8件) を見る
def list = ["data1", "data2", "data3"]
でよいですが、Javaの場合、以下のようなコードを結構よく目にします。
List<String> list = new ArrayList<String>(); list.add("data1"); list.add("data2"); list.add("data3");
かなり冗長なコードですね。知っている人には常識かもしれませんが、このような場合、Java5以降の文法では以下のような記述が可能です。
List<String> list = Arrays.asList("data1", "data2", "data3");
可変長引数とGenericsを組み合わせたイディオムですね。知っているとちょっと便利だと思います。
(追記)
なお、このイディオムで生成されたListはArrayListのインスタンスではなく、add()やremove()などの要素の追加削除はできません。こうした操作が必要なら
List<String> list = new ArrayList<String>(Arrays.asList("data1", "data2", "data3"));
と書く必要があります。結局、かなり冗長ですね。
可能ならGoogle-collectionsのLists.newArrayList()を使うのもよいでしょう。
List<String> list = Lists.newArrayList("data1", "data2", "data3");
http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Lists.html