Cos'è una classe interiore anonima?
Nella programmazione di computer orientata agli oggetti, una classe interna anonima è una classe che viene dichiarata all'interno di un metodo ma che è senza nome. Una classe interna anonima ha diverse restrizioni che la rendono diverso da una classe normale, tra cui una restrizione sull'ambito delle variabili a cui può accedere. Esistono alcune situazioni molto specifiche in cui l'utilizzo di una classe interna anonima può rendere il codice sorgente più leggibile, ma viene utilizzato principalmente per aiutare a far rispettare l'incapsulamento in cui la generazione di classi separate potrebbe complicarlo.
L'incapsulamento è il concetto nella programmazione orientata agli oggetti (OOP) che un oggetto e i suoi componenti dovrebbero essere in qualche modo protetta e limitata all'oggetto. Le classi interne anonime e le classi interne in generale aiutano a realizzare l'incapsulamento per oggetti particolarmente complessi. Invece di dover creare una classe che si basa su una esterna separata, legandoli insieme artificialmente e potenzialmente esponendo alcuni dei componenti, una classe interna anonima non puòcioè i due insieme solidamente.
In alcuni linguaggi di programmazione, una classe interna anonima può aiutare a superare le restrizioni della singola eredità. Se un oggetto eredita da una classe ma quindi deve accedervi a un'altra, una classe interna può essere generata al volo e quindi passato ai gestori appropriati. Questa tecnica è comune con callback e ascoltatori di eventi. L'unica alternativa sarebbe quella di creare un'intera seconda classe in cui vengono annullati solo uno o due metodi.
Classi interne anonime hanno in atto alcune restrizioni per prevenire l'incapsulamento di rottura e applicare l'ambito. La restrizione primaria è che una classe interna anonima non può accedere alle variabili del metodo in cui risiede a meno che tali variabili non vengano dichiarate finali. Questo perché la classe interna potrebbe continuare a funzionare oltre la vita della classe e il metodo in cui nidifica. Le variabili dell'involucroLa classe sarebbe stata distrutta una volta terminata la sua vita, quindi i riferimenti che la classe interiore detenuta sarebbe diventata immediatamente non valida. L'unica eccezione a questo è una variabile finale, perché esiste oltre l'istanza.
Uno degli usi più specifici per una classe interna anonima è la protezione del codice. Molte lingue OOP prevedono un meccanismo chiamato riflessione. La riflessione consente a un programma di sezionare un'altra classe e vedere quali sono le variabili e i metodi dei suoi membri, ma non il codice stesso. Usando una classe interna anonima, il contenuto della classe interna è protetto dalla riflessione e i meccanismi interni della classe più grande possono essere effettivamente nascosti.