Ответ 1
Это анонимный класс. Из Java в двух словах
Анонимный класс - это локальный класс без имени. Анонимный класс определяется и создается в одном сжатое выражение с использованием нового оператор. Хотя локальный класс определение - это оператор в блоке кода Java, анонимный класс определение - это выражение, которое означает, что он может быть включен как часть большего выражения, такого как вызов метода. Когда локальный класс используется только один раз, подумайте об использовании синтаксис анонимного класса, который помещает определение и использование класса в точно в том же месте.
Это общее средство предоставления специализации базового класса без явного определения нового класса с помощью выражения class
.