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:
- Luokka (voi olla abstrakti tai konkreettinen).
- 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');} };
- Luokka luodaan, mutta sen nimen päättää kääntäjä, joka laajentaa Person-luokkaa ja tarjoaa eat()-menetelmän toteutuksen.
- 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');} };
- Luokka luodaan, mutta sen nimen päättää kääntäjä, joka toteuttaa Eatable-rajapinnan ja tarjoaa eat()-metodin toteutuksen.
- 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');} }