Sobes.tech
Junior

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.