logo

Classe interna de Java Anonymous

La classe interna anònima de Java és una classe interna sense nom i per a la qual només es crea un objecte. Una classe interna anònima pot ser útil quan es fa una instància d'un objecte amb certs 'extres', com ara mètodes de sobrecàrrega d'una classe o interfície, sense haver de subclassificar una classe.

En paraules senzilles, una classe que no té nom es coneix com a classe interna anònima a Java. S'ha d'utilitzar si heu d'anul·lar un mètode de classe o interfície. La classe interna de Java Anonymous es pot crear de dues maneres:

  1. Classe (pot ser abstracta o concreta).
  2. Interfície

Exemple de classe interna anònima de Java utilitzant 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(); } } 
Prova-ho ara

Sortida:

 nice fruits 

Funcionament intern del codi donat

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Es crea una classe, però el seu nom el decideix el compilador, que amplia la classe Person i proporciona la implementació del mètode eat().
  2. Es crea un objecte de la classe Anonymous al qual es fa referència 'p', una variable de referència de tipus Persona.

Classe interna generada pel compilador

 import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } } 

Exemple de classe interna anònima de Java utilitzant la interfície

 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(); } } 
Prova-ho ara

Sortida:

 nice fruits 

Funcionament intern del codi donat

Realitza dues tasques principals darrere d'aquest codi:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Es crea una classe, però el seu nom el decideix el compilador, que implementa la interfície Eatable i proporciona la implementació del mètode eat().
  2. Es crea un objecte de la classe Anonymous al qual es fa referència 'p', una variable de referència del tipus Eatable.

Classe interna generada pel compilador

 import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }