Анонимные классы
Коротко: Класс без собственного имени, определяемый прямо на месте и сразу создающий экземпляр, — обычно чтобы один раз реализовать интерфейс или абстрактный класс.
Подробнее: Часто используются для разовых обработчиков событий или реализаций обратных вызовов, где отдельный именованный класс не оправдан. С Java 8 эту роль для функциональных интерфейсов обычно берут на себя выражения лямбда.
Runnable r = new Runnable() {
public void run() { System.out.println("running"); }
};Подробности
Анонимный класс при компиляции на самом деле создаёт собственный файл .class…
См. также: внутренние классы, лямбда, интерфейс