Clasa interioară anonimă Java este o clasă interioară fără nume și pentru care este creat un singur obiect. O clasă interioară anonimă poate fi utilă atunci când se realizează o instanță a unui obiect cu anumite „suplimente”, cum ar fi metodele de supraîncărcare a unei clase sau interfețe, fără a fi nevoie să subclaseze o clasă.
Cu cuvinte simple, o clasă care nu are nume este cunoscută ca o clasă interioară anonimă în Java. Ar trebui să fie folosit dacă trebuie să suprascrieți o metodă de clasă sau interfață. Clasa interioară Java Anonymous poate fi creată în două moduri:
- Clasa (poate fi abstractă sau concretă).
- Interfață
Exemplu de clasă interioară anonimă Java folosind clasa
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(); } }Testează-l acum
Ieșire:
nice fruits
Funcționarea internă a codului dat
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- Se creează o clasă, dar numele ei este decis de compilator, care extinde clasa Person și asigură implementarea metodei eat().
- Este creat un obiect din clasa Anonymous la care se face referire prin „p”, o variabilă de referință de tip Person.
Clasa internă generată de compilator
import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } }
Exemplu de clasă interioară anonimă Java folosind interfața
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(); } }Testează-l acum
Ieșire:
nice fruits
Funcționarea internă a codului dat
Îndeplinește două sarcini principale în spatele acestui cod:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- Se creează o clasă, dar numele ei este decis de compilator, care implementează interfața Eatable și asigură implementarea metodei eat().
- Este creat un obiect din clasa Anonymous la care se face referire prin „p”, o variabilă de referință de tip Eatable.
Clasa internă generată de compilator
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }