La classe interna anonima Java è una classe interna senza nome e per la quale viene creato un solo oggetto. Una classe interna anonima può essere utile quando si crea un'istanza di un oggetto con determinati 'extra' come metodi di sovraccarico di una classe o di un'interfaccia, senza dover effettivamente creare una sottoclasse di una classe.
In parole semplici, una classe senza nome è conosciuta come classe interna anonima in Java. Dovrebbe essere utilizzato se è necessario sovrascrivere un metodo di classe o di interfaccia. La classe interna Java Anonymous può essere creata in due modi:
- Classe (può essere astratta o concreta).
- Interfaccia
Esempio di classe interna anonima Java che utilizza la classe
TestAnonymousInner.java
abstract class Person{ abstract void eat(); } class TestAnonymousInner{ public static void main(String args[]){ Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; p.eat(); } }Provalo adesso
Produzione:
nice fruits
Funzionamento interno di un dato codice
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- Viene creata una classe, ma il suo nome viene deciso dal compilatore, che estende la classe Person e prevede l'implementazione del metodo eat().
- Viene creato un oggetto della classe Anonymous a cui fa riferimento 'p', una variabile di riferimento di tipo Persona.
Classe interna generata dal compilatore
import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } }
Esempio di classe interna anonima Java che utilizza l'interfaccia
interface Eatable{ void eat(); } class TestAnnonymousInner1{ public static void main(String args[]){ Eatable e=new Eatable(){ public void eat(){System.out.println('nice fruits');} }; e.eat(); } }Provalo adesso
Produzione:
nice fruits
Funzionamento interno di un dato codice
Esegue due compiti principali dietro questo codice:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- Viene creata una classe, ma il suo nome viene deciso dal compilatore, che implementa l'interfaccia Eatable e prevede l'implementazione del metodo eat().
- Viene creato un oggetto della classe Anonymous a cui fa riferimento 'p', una variabile di riferimento di tipo Eatable.
Classe interna generata dal compilatore
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }