(контрапункт Даниэлю Лью)
Одним из недостатков анонимных внутренних классов является то, что никто никогда не может использовать его где-либо еще, тогда как именованный внутренний класс может использоваться (если только классом, который его создал, если он стал закрытым). Это небольшое различие, но оно означает, что вы можете помочь избежать случайного воссоздания внутреннего класса в другом месте.
Кроме того, использование анонимного внутреннего класса затрудняет чтение вашего кода, поскольку ему приходится анализировать этот класс, возникший из ниоткуда. Используя именованный внутренний класс, вы можете организовать исходный код подробнее.
Я видел случаи, когда есть два (или более) анонимных внутренних класса с одинаковым кодом. Особенно в графических интерфейсах (где у вас может быть несколько элементов управления, выполняющих одно и то же действие) это может возникать (и я говорю о производственном коде, а не коде, который написали мои студенты).
Проблема читаемости имеет две стороны: некоторые люди находят анонимные внутренние классы лучше, так как они позволяют вам увидеть, что происходит в одном месте, другие считают это отвлечением. Эта часть сводится к личным предпочтениям.
Кроме того, создание статического класса более эффективно, если вы объявляете анонимный внутренний класс в экземпляре, тогда будут дополнительные издержки, которые, если вам не нужен доступ к переменным экземпляра, расточительны (но, вероятно, нет). стоит волноваться, пока это не станет проблемой).
Мое личное предпочтение - использовать неанонимные классы, поскольку они обеспечивают большую гибкость при изменении кода позже.