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:
- Classe (pot ser abstracta o concreta).
- 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');} };
- 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().
- 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');} };
- 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().
- 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');} }