Может кто-нибудь объяснить разницу между анонимными классами, вложенными классами и закрытыми классами в Java? Я хотел бы знать затраты времени выполнения, связанные с каждым из них, и подход компилятора к каждому, поэтому я могу получить представление о том, что лучше всего использовать, например. производительность (потенциал для оптимизации компилятора), использование памяти и общая приемлемость с другими Java-кодерами.
Под анонимными классами я имею в виду те, которые объявлены встроенными в функцию таким странным Java-способом. Это часто встречается в примерах кода Swing, где вы пишете обработчик кнопки, встроенный в его объявление. Мне не очень нравятся анонимные классы, потому что вы получаете эти забавные файлы MyClass $ 1.class и чаще всего вам придется реорганизовывать позже, когда выясняется, что вы хотите сделать анонимный класс синглтоном или вам нужен дескриптор или что-то. Мне также просто не нравится, как вы прикрепляете обработчик в форме чего-то, что вы только что придумали во время вызова другой функции. Это просто заставляет меня чувствовать себя странно. : -)
Частные классы - это те, которые вы пишете внизу вашего файла, полностью за пределами объявления вашего открытого класса. Я предпочитаю частные классы только потому, что они имеют смысл в других языках, где нет сильных отношений 1: 1 между исходным файлом и классом. У меня нет такого странного чувства, и я знаю (или я думаю, что знаю), как компилятор Java будет обрабатывать объявление этого класса.
Вложенные классы - это классы, написанные внутри скрягт вашего публичного класса. Я действительно не знаю, что означает вложенный класс по сравнению с двумя другими. : -)