Я знаю, что этот код:
Set<String> set = new HashSet<String>() {{
add("test1");
add("test2");
}};
действительно:
Set<String> set = new HashSet<String>() {
{//initializer
add("test1");
add("test2");
}
};
Блок инициализации выполняется до блока конструктора. В приведенном выше примере add ( "test1" ) вызывается перед выполнением конструктора. Конструктор может инициализировать многие поля экземпляра, чтобы этот класс работал. Мне интересно, зачем вызывать .add() до того, как будет работать конструктор? Есть ли какой-либо случай, который может вызвать проблему?