logo

Java Anonymous вътрешен клас

Анонимният вътрешен клас на Java е вътрешен клас без име и за който се създава само един обект. Анонимен вътрешен клас може да бъде полезен, когато се прави екземпляр на обект с определени „екстри“, като например претоварване на методи на клас или интерфейс, без да се налага действително да се прави подклас на клас.

С прости думи, клас, който няма име, е известен като анонимен вътрешен клас в Java. Трябва да се използва, ако трябва да замените метод на клас или интерфейс. Java Anonymous вътрешният клас може да бъде създаден по два начина:

  1. Клас (може да е абстрактен или конкретен).
  2. Интерфейс

Пример за анонимен вътрешен клас на Java с използване на клас

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(); } } 
Тествайте сега

Изход:

 nice fruits 

Вътрешна работа на даден код

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Създава се клас, но името му се определя от компилатора, който разширява класа Person и осигурява имплементацията на метода eat().
  2. Създава се обект от класа Anonymous, който е посочен от 'p', референтна променлива от тип Person.

Вътрешен клас, генериран от компилатора

 import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } } 

Пример за анонимен вътрешен клас на Java, използващ интерфейс

 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(); } } 
Тествайте сега

Изход:

 nice fruits 

Вътрешна работа на даден код

Той изпълнява две основни задачи зад този код:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Създава се клас, но името му се определя от компилатора, който имплементира интерфейса Eatable и осигурява имплементацията на метода eat().
  2. Създава се обект от класа Anonymous, който е посочен от 'p', референтна променлива от типа Eatable.

Вътрешен клас, генериран от компилатора

 import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }