logo

Classe interna anonima Java

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:

  1. Classe (può essere astratta o concreta).
  2. 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');} }; 
  1. Viene creata una classe, ma il suo nome viene deciso dal compilatore, che estende la classe Person e prevede l'implementazione del metodo eat().
  2. 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');} }; 
  1. Viene creata una classe, ma il suo nome viene deciso dal compilatore, che implementa l'interfaccia Eatable e prevede l'implementazione del metodo eat().
  2. 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');} }