Czym są klasy anonimowe w Java i gdzie mogą być stosowane?
sobes.tech AI
Odpowiedź od AI
Klasy anonimowe w Javie to klasy lokalne bez nazwy. Są deklarowane i tworzone jednocześnie. Zazwyczaj są używane, gdy potrzebna jest jednorazowa implementacja interfejsu lub rozszerzenie klasy abstrakcyjnej lub zwykłej.
Zastosowania klas anonimowych:
-
Obsługa zdarzeń w GUI: Często używane do tworzenia obsługi kliknięć przycisków lub innych działań użytkownika.
// Przykład z Swing ActionListener JButton button = new JButton("Kliknij mnie"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Przycisk naciśnięty!"); } }); -
Implementacja interfejsów z jednym metodą abstrakcyjną (interfejsy SAM): Przed pojawieniem się wyrażeń lambda, był to główny sposób implementacji funkcjonalności dla takich interfejsów.
// Przykład z Runnable new Thread(new Runnable() { @Override public void run() { System.out.println("Wątek uruchomiony"); } }).start(); -
Tworzenie obiektów "na żywo": Gdy trzeba szybko utworzyć obiekt z zmienionym zachowaniem w stosunku do istniejącej klasy bez konieczności tworzenia osobnej nazwanego klasy.
// Przykład rozszerzenia klasy abstrakcyjnej AbstractList<String> cityList = new AbstractList<String>() { private String[] cities = {"Moskwa", "Sankt Petersburg"}; @Override public String get(int index) { return cities[index]; } @Override public int size() { return cities.length; } }; System.out.println(cityList.get(0)); // Wypisze: Moskwa
Klasy anonimowe mają dostęp do zmiennych lokalnych finalnych lub efektywnie finalnych w zakresie, w którym są zadeklarowane. Nie mogą mieć członków statycznych i nie mogą być abstrakcyjne lub finalne.