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