Skip to main content

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 non è nominata.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 protetti e legati 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 può legare i due insieme.

In alcuni linguaggi di programmazione, una classe interiore anonimaAiuta 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.

Le 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 della classe di avvolgimento sarebbero state distrutte 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é esisterà 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ù ampia possono essere effettivamente nascosti.