A Java anonymous belső osztály egy név nélküli belső osztály, amelyhez csak egyetlen objektum jön létre. Az anonim belső osztály hasznos lehet, ha egy objektumot bizonyos „extrákkal” hoz létre, például egy osztály vagy interfész túlterhelési metódusait anélkül, hogy ténylegesen alosztályoznia kellene egy osztályt.
Egyszerűen fogalmazva, egy névtelen osztályt névtelen belső osztálynak nevezünk a Java-ban. Akkor kell használni, ha felül kell írnia egy osztály vagy interfész metódusát. A Java Anonymous belső osztály kétféleképpen hozható létre:
- Osztály (lehet absztrakt vagy konkrét).
- Felület
Java névtelen belső osztály példa osztály használatával
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(); } }Tesztelje most
Kimenet:
nice fruits
Adott kód belső működése
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- Létrejön egy osztály, de a nevét a fordító határozza meg, amely kiterjeszti a Person osztályt és biztosítja az eat() metódus megvalósítását.
- Létrejön az Anonymous osztály objektuma, amelyre 'p' hivatkozik, egy személy típusú referenciaváltozó.
A fordító által generált belső osztály
import java.io.PrintStream; static class TestAnonymousInner extends Person { TestAnonymousInner(){} void eat() { System.out.println('nice fruits'); } }
Java névtelen belső osztály példa interfész használatával
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(); } }Tesztelje most
Kimenet:
táblázatok létrehozása latexből
nice fruits
Adott kód belső működése
A kód mögött két fő feladatot lát el:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- Létrejön egy osztály, de a nevét a fordító határozza meg, amely megvalósítja az Eatable felületet és biztosítja az eat() metódus megvalósítását.
- Létrejön az Anonymous osztály objektuma, amelyre 'p' hivatkozik, amely egy Eatable típusú referenciaváltozó.
A fordító által generált belső osztály
import java.io.PrintStream; static class TestAnonymousInner1 implements Eatable { TestAnonymousInner1(){} void eat(){System.out.println('nice fruits');} }