Mis on anonüümsed klassid Java-s ja kus neid saab rakendada?
sobes.tech AI
Vastus AI-lt
Java anonüümklassi on kohaliku klassi ilma nimega. Need deklareeritakse ja luuakse samaaegselt. Tavaliselt kasutatakse neid, kui on vaja ühekordset liidese rakendamist või abstraktse või tavalise klassi laiendamist.
Anonüümklassi kasutamine:
-
Sündmuste töötlejad GUI-s: Sageli kasutatakse nuppude vajutuste või teiste kasutaja tegevuste töötlejate loomiseks.
// Näide Swing ActionListeneriga JButton nupp = new JButton("Vajuta mind"); nupp.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Nupp on vajutatud!"); } }); -
Liideste rakendamine ühe abstraktse meetodiga (SAM-liidesed): Enne lambda-väljendeid oli see peamine viis nende liideste funktsionaalsuse rakendamiseks.
// Näide Runnable'iga new Thread(new Runnable() { @Override public void run() { System.out.println("Lõim on käivitunud"); } }).start(); -
Objektide "kiire" loomine: Kui on vaja kiiresti luua objekt muudetud käitumisega olemasolevast klassist ilma eraldi nimetatud klassi loomata.
// Abstraktse klassi laiendamine AbstractList<String> linnadeNimekiri = new AbstractList<String>() { private String[] linnad = {"Moskva", "Sankt-Peterburg"}; @Override public String get(int index) { return linnad[index]; } @Override public int size() { return linnad.length; } }; System.out.println(linnadeNimekiri.get(0)); // Väljund: Moskva
Anonüümklassidel on juurdepääs final või efektiivselt final kohalikele muutujatele, mis on nende piirkonnas määratletud. Nad ei saa omada staatilisi liikmeid ning ei saa olla abstract või final.