Junior
Dlaczego w niektórych interfejsach nie definiuje się metod?
sobes.tech AI
Odpowiedź od AI
Interfejsy marker (marker interfaces) nie definiują metod. Służą do oznaczania klasy, wskazując na posiadanie przez nią określonej cechy lub możliwości.
Przykłady interfejsów marker:
java.io.Serializable: Oznacza klasę, której obiekty mogą być serializowane.java.lang.Cloneable: Oznacza klasę, której obiekty mogą być klonowane (obsługują metodęclone()).java.util.RandomAccess: Oznacza listy, które obsługują szybki (stały czas) dostęp losowy do swoich elementów.
Użycie interfejsów marker pozwala:
- Identyfikować klasy: Sprawdzić typ obiektu, aby ustalić, czy należy do określonej grupy, za pomocą operatora
instanceof.// sprawdzanie, czy obiekt jest serializowalny if (object instanceof Serializable) { // wykonywanie serializacji } - Zmieniać zachowanie: API mogą zmieniać swoje zachowanie w zależności od tego, czy klasa implementuje interfejs marker. Na przykład, jeśli lista implementuje
RandomAccess, operacje na niej mogą być zoptymalizowane. - Ograniczać dostęp: Niektóre API mogą wymagać, aby przekazywane im obiekty implementowały określony interfejs marker.
- Adnotacje: W bardziej nowoczesnych podejściach wiele scenariuszy użycia interfejsów marker realizuje się za pomocą adnotacji. Jednak interfejsy marker nadal są używane w bibliotece standardowej Java i w kodzie legacy.