Anonimowa klasa wewnętrzna Java

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:

  1. Klasa (może być abstrakcyjna lub konkretna).
  2. 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');} };  
  1. Tworzy się klasa, ale o jej nazwie decyduje kompilator, który rozszerza klasę Person i zapewnia implementację metody eat().
  2. 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');} };  
  1. Tworzona jest klasa, ale o jej nazwie decyduje kompilator, który implementuje interfejs Eatable i zapewnia implementację metody eat().
  2. 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');} }