Sobes.tech
Junior

Ce sunt clasele anonime în Java și unde pot fi aplicate?

sobes.tech AI

Răspuns de la AI

Clasele anonime în Java sunt clase locale fără nume. Sunt declarate și create simultan. De obicei, sunt utilizate atunci când este nevoie de o implementare unică a unei interfețe sau de extinderea unei clase abstracte sau normale.

Aplicații ale claselor anonime:

  • Manipulatoare de evenimente în GUI: Sunt adesea folosite pentru a crea manipulatoare de clicuri pe butoane sau alte acțiuni ale utilizatorului.

    // Exemplu cu Swing ActionListener
    JButton button = new JButton("Apasă-mă");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Buton apăsat!");
        }
    });
    
  • Implementarea interfețelor cu o metodă abstractă (interfețe SAM): Înainte de apariția expresiilor lambda, acesta era principalul mod de a implementa funcționalități pentru astfel de interfețe.

    // Exemplu cu Runnable
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Fir de execuție pornit");
        }
    }).start();
    
  • Crearea obiectelor "la fața locului": Când trebuie să creezi rapid un obiect cu comportament modificat față de o clasă existentă, fără a fi nevoie să creezi o clasă cu nume separat.

    // Exemplu de extindere a unei clase abstracte
    AbstractList<String> cityList = new AbstractList<String>() {
        private String[] cities = {"Moscova", "Sankt Petersburg"};
    
        @Override
        public String get(int index) {
            return cities[index];
        }
    
        @Override
        public int size() {
            return cities.length;
        }
    };
    System.out.println(cityList.get(0)); // Va afișa: Moscova
    

Clasele anonime au acces la variabile locale finale sau efectiv finale în domeniul în care sunt declarate. Ele nu pot avea membri statici și nu pot fi abstracte sau finale.