Я второй, что написал matt b, и добавлю, что еще одно использование анонимных скобок, которое я видел, это объявление неявного конструктора в анонимных классах. Например:
List<String> names = new ArrayList<String>() {
// I want to initialize this ArrayList instace in-line,
// but I can't define a constructor for an anonymous class:
{
add("Adam");
add("Eve");
}
};
Некоторые фреймворки для юнит-тестирования подняли этот синтаксис на другой уровень, который позволяет работать с некоторыми хитрыми вещами, которые выглядят совершенно несовместимыми. Поскольку они выглядят незнакомыми, я сам не такой большой поклонник, но стоит хотя бы узнать, что происходит, если вы столкнетесь с этим.