流され日記

好奇心の赴くまま、日々起こした行動の記録

Javaの略記法

長らく放置してたけど、転職してJavaをやることになったので、これを機にもう一度記事を書いていこうと思う。

Javaを始めて最初に思ったのが、「ハッシュはどうやって定義すんの?」ってこと。 だって、JavaScript だったら普通に

var map = {"hoge": 1, "fuga": 1};

とか書けるところを、

Map<String, Object> map = new HashMap<String, Object>();
map.put("hoge", 1);
map.put("fuga", 1);

とか書かなきゃいけない。 マジめんどい。 もうちょい簡単に書く方法があるだろJK。

うん、もうちょい簡単に書ける方法があった。

匿名クラス + 初期化ブロック

Java にはその場でクラスを拡張する方法がある。 また、コンストラクタを書くかわりに、初期化ブロックというインスタンス生成時に実行される処理の記述方法がある。 この2つを応用して、このように書ける。

Map<String, Object> map = new HashMap<String, Object>() {{
  put("hoge", 1);
  put("fuga", 1);
}}

Listの初期化なんかも同様に書ける。

行数はむしろ増えたけど、パラメータの初期化がカッコ内で行われているので、よりわかりやすいとは思う。