logo

Java Anonymous -sisäluokka

Java anonyymi sisäluokka on sisäluokka, jolla ei ole nimeä ja jolle luodaan vain yksi objekti. Anonyymi sisäluokka voi olla hyödyllinen, kun tehdään ilmentymä objektista, jossa on tiettyjä 'lisäominaisuuksia', kuten luokan tai rajapinnan ylikuormitusmenetelmiä ilman, että luokkaa tarvitsee itse asiassa luokitella.

Yksinkertaisesti sanottuna luokka, jolla ei ole nimeä, tunnetaan Javassa anonyyminä sisäisenä luokkana. Sitä tulisi käyttää, jos sinun on ohitettava luokan tai käyttöliittymän menetelmä. Java Anonymous -sisäluokka voidaan luoda kahdella tavalla:

  1. Luokka (voi olla abstrakti tai konkreettinen).
  2. Käyttöliittymä

Java anonyymi sisäisen luokan esimerkki luokan avulla

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(); } } 
Testaa nyt

Lähtö:

 nice fruits 

Annetun koodin sisäinen toiminta

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Luokka luodaan, mutta sen nimen päättää kääntäjä, joka laajentaa Person-luokkaa ja tarjoaa eat()-menetelmän toteutuksen.
  2. Luodaan Anonymous-luokan objekti, johon viitataan henkilötyypin viitemuuttujalla 'p'.

Kääntäjän luoma sisäinen luokka

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

Java anonyymi sisäluokan esimerkki käyttöliittymällä

 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(); } } 
Testaa nyt

Lähtö:

 nice fruits 

Annetun koodin sisäinen toiminta

Se suorittaa kaksi päätehtävää tämän koodin takana:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Luokka luodaan, mutta sen nimen päättää kääntäjä, joka toteuttaa Eatable-rajapinnan ja tarjoaa eat()-metodin toteutuksen.
  2. Luodaan Anonymous-luokan objekti, johon viitataan 'p':llä, joka on syötävä-tyyppinen viitemuuttuja.

Kääntäjän luoma sisäinen luokka

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