Реализация интерфейсов обратного вызова для существующих классов - чистое зло.Очевидно.Просто не делай этого.Всегда.
Нелокальные внутренние классы немного бесполезны.Вы можете использовать их с наследованием, у них может быть несколько конструкторов, у них есть имя и т. Д. Если у вас есть такие требования, то вам действительно следует искать новые внешние классы.
Анонимные внутренние классы относительно лаконично.Они устраняют необходимость добавлять поля и конструкторы для копирования полей.Искушение, которое испытывают некоторые люди, чтобы сделать поля локальных переменных в «главном» классе, исчезает.Вы можете просто сделать локальные переменные из включающего метода final
.«Повторное использование» может быть достигнуто с помощью стандартного программирования, не прибегая к введению более именованных классов.