Anonymná vnútorná trieda Java je vnútorná trieda bez mena, pre ktorú je vytvorený iba jeden objekt. Anonymná vnútorná trieda môže byť užitočná pri vytváraní inštancie objektu s určitými „doplnkami“, ako sú napríklad preťaženie metód triedy alebo rozhrania, bez toho, aby ste museli triedu skutočne podtriediť.
Jednoducho povedané, trieda, ktorá nemá meno, je v Jave známa ako anonymná vnútorná trieda. Mal by sa použiť, ak musíte prepísať metódu triedy alebo rozhrania. Vnútornú triedu Java Anonymous je možné vytvoriť dvoma spôsobmi:
- Trieda (môže byť abstraktná alebo konkrétna).
- Rozhranie
Príklad anonymnej vnútornej triedy Java pomocou triedy
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(); } }Vyskúšajte to
Výkon:
nice fruits
Interné fungovanie daného kódu
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- Trieda je vytvorená, ale o jej mene rozhoduje kompilátor, ktorý rozširuje triedu Person a zabezpečuje implementáciu metódy eat().
- Vytvorí sa objekt triedy Anonymous, na ktorý sa odkazuje 'p', referenčná premenná typu Osoba.
Interná trieda vygenerovaná kompilátorom
import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } }
Príklad anonymnej vnútornej triedy Java pomocou rozhrania
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(); } }Vyskúšajte to
Výkon:
nice fruits
Interné fungovanie daného kódu
Za týmto kódom vykonáva dve hlavné úlohy:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- Trieda je vytvorená, ale o jej mene rozhoduje kompilátor, ktorý implementuje rozhranie Eatable a zabezpečuje implementáciu metódy eat().
- Vytvorí sa objekt triedy Anonymous, na ktorý sa odkazuje 'p', referenčná premenná typu Eatable.
Interná trieda vygenerovaná kompilátorom
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }