Anonimowa klasa wewnętrzna Java to klasa wewnętrzna bez nazwy, dla której tworzony jest tylko jeden obiekt. Anonimowa klasa wewnętrzna może być przydatna podczas tworzenia instancji obiektu z pewnymi „dodatkami”, takimi jak przeciążanie metod klasy lub interfejsu, bez konieczności faktycznego tworzenia podklasy.
Krótko mówiąc, klasa, która nie ma nazwy, nazywana jest w Javie anonimową klasą wewnętrzną. Należy go używać, jeśli musisz zastąpić metodę klasy lub interfejsu. Klasę wewnętrzną Java Anonymous można utworzyć na dwa sposoby:
- Klasa (może być abstrakcyjna lub konkretna).
- Interfejs
Przykład anonimowej klasy wewnętrznej Java przy użyciu klasy
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(); } }Przetestuj teraz
Wyjście:
nice fruits
Wewnętrzne działanie zadanego kodu
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- Tworzy się klasa, ale o jej nazwie decyduje kompilator, który rozszerza klasę Person i zapewnia implementację metody eat().
- Tworzony jest obiekt klasy Anonymous, do którego odwołuje się „p”, zmienna referencyjna typu Person.
Klasa wewnętrzna wygenerowana przez kompilator
import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } }
Przykład anonimowej klasy wewnętrznej Java przy użyciu interfejsu
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(); } }Przetestuj teraz
Wyjście:
nice fruits
Wewnętrzne działanie zadanego kodu
Wykonuje dwa główne zadania stojące za tym kodem:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- Tworzona jest klasa, ale o jej nazwie decyduje kompilator, który implementuje interfejs Eatable i zapewnia implementację metody eat().
- Tworzony jest obiekt klasy Anonymous, do którego odwołuje się „p”, zmienna referencyjna typu Eatable.
Klasa wewnętrzna wygenerowana przez kompilator
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }