Очень плохой стиль для кодирования, но иногда неизбежный.
Вторая часть этого заявления явно ложна.Всегда можно избежать использования вложенных классов на уровне реализации.
Я не могу думать ни о каком разумном дизайн причина для гнездовых названий классов более одного уровня и анонимных классов более 3 или 4 уровней. (Я помню один раз, используя 3 или 4 уровня анонимных внутренних классов в приложении Eclipse RCP-с очень сложными обратными вызовами. Но это было очень необычно, и в ретроспективе это была плохая идея.)
1) является существует ли какой-либо предел для классов вложенности?
Теоретически предел - это ограничение на 64 КБ для полностью квалифицированных классов. На практике предел - это здравый смысл.
2) являются ли они эквивалентными?
Они? Если вы спрашиваете, являются ли вложенные классы эквивалентными не-вложенным классам, ответ Да ... для всех практических целей. Единственное, что вы можете делать с вложенными классами, которые не можете делать с обычными классами, - это поделиться вещами, объявленными как private
. И обходной путь - это облегчить вам доступ к пакету.
3) как вы справляетесь с такими ситуациями? Создать библиотеку?
Я не знаю, в какой ситуации вы говорите. Обычный способ модуляции Java-программ, состоящих из нескольких классов, - это использование пакетов Java, а не кластеризации классов. Это то, чего вам не хватает?
это всегда можно избежать – Bozho
Является ли этот поставляемый код синтаксически правильным? – nmr
Этого нельзя избежать при определенных обстоятельствах генерации кода. Я столкнулся с пределом глубины при использовании Jaxb в плохо спроектированном файле схемы (который, к счастью, я мог бы редактировать). – Spina