Uno stile molto povero da codificare ma a volte inevitabile.
La seconda parte di questa dichiarazione è palesemente falsa.È sempre possibile evitare l'uso di classi nidificate a livello di implementazione.
Non riesco a pensare a nessun ragionevole motivo motivo per nidificare classi denominate più di un livello e classi anonime più di 3 o 4 livelli. (Mi ricordo una volta utilizzando 3 o 4 livelli di classi interne anonime in un'applicazione Eclipse RCP con callback davvero complicati. Ma questo era davvero insolito, e in retrospettiva è stata una cattiva idea.)
1) è esiste un limite per le classi di nidificazione?
In teoria il limite è il limite di 64 KB sui nomi di classe completi. In pratica, il limite è di buon senso.
2) sono equivalenti?
Essi? Se stai chiedendo se le classi annidate sono equivalenti alle classi non nidificate, la risposta è Sì ... a tutti gli intenti pratici. L'unica cosa che puoi fare con le classi annidate che non puoi fare con le classi regolari è condividere cose dichiarate come private
. E la soluzione è di rilassare il tuo accesso al pacchetto privato.
3) come affrontare tali situazioni? Crea una biblioteca?
Non so di quale situazione si stia parlando. Il modo normale di modularizzare un programma Java composto da più classi consiste nell'usare pacchetti Java piuttosto che nidificazione di classi. E 'quello che ti stai perdendo?
fonte
2010-05-02 09:37:28
è sempre evitabile – Bozho
Questo codice fornito è sintatticamente corretto? – nmr
Non è evitabile in determinate circostanze di generazione del codice. Mi sono imbattuto nel limite di profondità quando usavo Jaxb su un file di schema mal progettato (che, per fortuna, potevo modificare). – Spina