Java / 基礎 / クラス / Double Brace Initialization

Java / 基礎 / クラス / Double Brace Initialization

カタカナで書くと「ダブルブレースイニシャライゼーション」というやつか。

インスタンスの生成と初期化を同時にできるという便利な文法のようだ。

このように書く。コンストラクタの後ろにおもむろに2重の括弧を書いてその中に new される対象のインスタンスに対するメソッドをずらずら書くというもの。

List<String> hogeList = new ArrayList<String>(){{
    add("hoge");
    add("piyo");
    add("fuga");
}};

しかし、問題点がいくつかあるっぽく、調べると、「使うな」ということのようだ。

理由としては

  • 機能としてマニアック過ぎて読み手に負担をかける
  • Java 8 以降では代替の手段がある
  • 内部実装の関係でメモリリークを引き起こす可能性がある
  • シリアライズに対応できない

なので、知っておく程度の文法

java/basic/class/double_brace_initialization.txt · 最終更新: 2020-10-08 12:48 by ore