Java Anonymní vnitřní třída

Anonymní vnitřní třída Java je vnitřní třída bez jména, pro kterou je vytvořen pouze jeden objekt. Anonymní vnitřní třída může být užitečná při vytváření instance objektu s určitými „vychytávkami“, jako je přetížení metod třídy nebo rozhraní, aniž byste museli třídu skutečně podtřídu.

Jednoduše řečeno, třída, která nemá jméno, je v Javě známá jako anonymní vnitřní třída. Mělo by se použít, pokud musíte přepsat metodu třídy nebo rozhraní. Vnitřní třídu Java Anonymous lze vytvořit dvěma způsoby:

  1. Třída (může být abstraktní nebo konkrétní).
  2. Rozhraní

Příklad anonymní vnitřní třídy Java pomocí třídy

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(); } }  
Otestujte to hned

Výstup:

 nice fruits  

Vnitřní fungování daného kódu

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} };  
  1. Třída je vytvořena, ale o jejím názvu rozhoduje kompilátor, který rozšiřuje třídu Person a zajišťuje implementaci metody eat().
  2. Vytvoří se objekt třídy Anonymous, na který se odkazuje 'p', referenční proměnná typu Osoba.

Interní třída generovaná kompilátorem

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

Příklad anonymní vnitřní třídy Java pomocí rozhraní

 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(); } }  
Otestujte to hned

Výstup:

 nice fruits  

Vnitřní fungování daného kódu

Za tímto kódem plní dva hlavní úkoly:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };  
  1. Třída je vytvořena, ale o jejím názvu rozhoduje kompilátor, který implementuje rozhraní Eatable a zajišťuje implementaci metody eat().
  2. Vytvoří se objekt třídy Anonymous, na který se odkazuje 'p', referenční proměnná typu Eatable.

Interní třída generovaná kompilátorem

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