Accedere a variabili della classe esterna da una classe interna

Le classi interne, e quindi non static, possono accedere sia pure con qualche limitazione alle variabili della classe esterna.

Considera il seguente esempio:

Qui la classe interna Inner non è solo interna alla classe ma è anche interna al metodo outerMethod().
Essa può accere alla variabile membro x anche se è dichiarata private e può accedere alla variabile locale y solo perchè è dichiarata final.
Se la variabile y non fosse dichiarata final il codice non compilerebbe e restituirebbe l’errore:
“Cannot refer to a non-final variable y inside an inner class defined in a different method …”

Una situazione analoga si verifica anche per le classi anonime:

Per testare la classe Outer è necessario un metodo main():

che genera il risultato:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.