logo

Java Anonymous unutarnja klasa

Java anonimna unutarnja klasa je unutarnja klasa bez imena i za koju se kreira samo jedan objekt. Anonimna unutarnja klasa može biti korisna kada se radi instanca objekta s određenim 'dodacima' kao što su metode preopterećenja klase ili sučelja, bez potrebe za stvarnom potklasom klase.

Jednostavnim riječima, klasa koja nema ime poznata je kao anonimna unutarnja klasa u Javi. Trebalo bi se koristiti ako morate nadjačati metodu klase ili sučelja. Java Anonymous unutarnja klasa može se stvoriti na dva načina:

  1. Klasa (može biti apstraktna ili konkretna).
  2. Sučelje

Java anonimni primjer unutarnje klase pomoću klase

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(); } } 
Testirajte sada

Izlaz:

 nice fruits 

Interni rad zadanog koda

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Klasa je stvorena, ali o njenom imenu odlučuje kompilator, koji proširuje klasu Person i osigurava implementaciju metode eat().
  2. Stvara se objekt klase Anonymous na koji upućuje 'p', referentna varijabla tipa Person.

Interna klasa koju generira kompilator

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

Java anonimni primjer unutarnje klase pomoću sučelja

 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(); } } 
Testirajte sada

Izlaz:

 nice fruits 

Interni rad zadanog koda

Iza ovog koda obavlja dva glavna zadatka:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Klasa je stvorena, ali o njenom imenu odlučuje prevodilac, koji implementira sučelje Eatable i osigurava implementaciju metode eat().
  2. Stvara se objekt klase Anonymous na koji upućuje 'p', referentna varijabla tipa Eatable.

Interna klasa koju generira kompilator

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