Sobes.tech
Junior

Mi az az anonim osztály Java-ban, és hol alkalmazhatók?

sobes.tech MI

Válasz az MI-től

A Java-ban az anonim osztályok névtelen helyi osztályok. Egyidejűleg deklarálják és hozzák létre őket. Általában akkor használják őket, amikor egy interfész egyszeri megvalósítására vagy egy absztrakt vagy normál osztály kiterjesztésére van szükség.

Az anonim osztályok alkalmazásai:

  • Eseménykezelők GUI-ban: Gyakran használják gombnyomások vagy más felhasználói műveletek kezelőinek létrehozására.

    // Példa Swing ActionListener-rel
    JButton button = new JButton("Kattints rám");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Gomb megnyomva!");
        }
    });
    
  • Interfészek megvalósítása egy absztrakt metódussal (SAM interfészek): Lambda kifejezések megjelenése előtt ez volt a fő módszer az ilyen interfészek funkcionalitásának megvalósítására.

    // Példa Runnable-rel
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Szál elindítva");
        }
    }).start();
    
  • Objektumok "élesben" történő létrehozása: Gyorsan létre kell hozni egy objektumot módosított viselkedéssel egy meglévő osztályhoz képest anélkül, hogy külön osztályt kellene létrehozni.

    // Egy absztrakt osztály kiterjesztésének példája
    AbstractList<String> cityList = new AbstractList<String>() {
        private String[] cities = {"Moszkva", "Szentpétervár"};
    
        @Override
        public String get(int index) {
            return cities[index];
        }
    
        @Override
        public int size() {
            return cities.length;
        }
    };
    System.out.println(cityList.get(0)); // Kiírja: Moszkva
    

Az anonim osztályok hozzáférnek a deklarációjuk helyén lévő, végleges vagy hatékonyan végleges helyi változókhoz. Nem rendelkezhetnek statikus tagokkal, és nem lehetnek absztriek vagy véglegesek.