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.
npm vymazat mezipaměť
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:
- Třída (může být abstraktní nebo konkrétní).
- 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:
rychlé řazení java
nice fruits
Vnitřní fungování daného kódu
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- 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().
- 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 extends Person { TestAnonymousInner(){} 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');} };
- Třída je vytvořena, ale o jejím názvu rozhoduje kompilátor, který implementuje rozhraní Eatable a zajišťuje implementaci metody eat().
- 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 implements Eatable { TestAnonymousInner1(){} void eat(){System.out.println('nice fruits');} }