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.