uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

Javaで簡潔にリテラル(的なもの)を

よく、Groovyが簡潔だということを言うためにGroovyだと

list = ["abc", "def", "ghi"]

と1行で欠けるのに、Javaだと

List list = new ArrayList();
list.add("abc");
list.add("def");
list.add("ghi");

みたいに4行にもなっちゃう、などが言われます。
しかしJava 5以降のJavaなら、

List list = Arrays.asList("abc", "def", "ghi");

と一応一行でかけるので不公平な言い方だと言えましょう。

ちなみにこのasListは可変個数引数のメソッドですね
asList(...)が知られているかどうかは別として・・・。

同様に、

map = [Hoge:3, Goge:4, Uge:5]

も、Javaでも以下のように書けます。

Map map=new HashMap(){{put("Hoge",3);put("Goge",4);put("Uge",5);}};

いや、書きませんけどね。
(HashMapそのものではなくサブクラスのインスタンスになるし)。

珍しくJava表記を擁護してみました(なってるか??)。