私はこのコードを知っています:
Set<String> set = new HashSet<String>() {{
add("test1");
add("test2");
}};
本当に:
Set<String> set = new HashSet<String>() {
{//initializer
add("test1");
add("test2");
}
};
イニシャライザ ブロックは、コンストラクタ ブロックの前に実行されています。上記の例では、コンストラクターが実行される前に add("test1") が呼び出されます。このクラスが機能するように、コンストラクターは多くのインスタンス フィールドを初期化している可能性があります。コンストラクターが機能する前に.add()を呼び出すのはなぜですか? 問題となるケースはありますか?