Мне потребовалось некоторое время, чтобы понять анонимные внутренние занятия. Основные вещи, которые нужно запомнить:
Они похожи на параметры, за исключением того, что вместо передачи примитива или объекта, который вы передаете, в классе, который реализует интерфейс / расширяет класс (да, они также работают с интерфейсами) в зависимости от параметра метода.
Они анонимны, поэтому «исчезают» сразу после выталкивания метода из стека.
}); мертвая распродажа для анонимного внутреннего класса.
Они часто всплывают в пользовательских интерфейсах для событий слушателя
Они сохраняют беспорядок в вашем коде, но также затрудняют чтение.
Для полного наказания читайте JLS: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.9.5
Если вы заинтересованы в знании мелочей о таких вещах, чтение книги SCJP и сдача экзамена - это хорошо, или вы можете изучать JLS. Он не научит вас программировать, но поможет вам понять, как работает Java и, в некотором смысле, многие другие ОО-языки.