Junior
Dlaczego w niektórych interfejsach nie definiuje się metod?
sobes.tech AI
Odpowiedź od AI
Takie interfejsy nazywane są interfejsami marker (marker interfaces). Nie zawierają metod i służą do oznaczania klas, wskazując kompilatorowi lub JVM pewne właściwości lub semantykę klasy.
Przykłady:
java.io.Serializable: Oznacza klasę jako serializowalną.java.lang.Cloneable: Wskazuje, że obiekt może być klonowany.java.util.RandomAccess: Optymalizuje losowy dostęp do elementów listy.
Zalety:
- Semantyka: Wyraźnie wskazują zamiar programisty względem klasy.
- Polimorfizm: Pozwalają na używanie wywołań polimorficznych, pracując z grupą klas implementujących ten sam interfejs marker.
- Adnotacje: Mogą być używane do dostarczania dodatkowych informacji narzędziom (np. frameworkom, ORM).
Alternatywy (w zależności od kontekstu):
- Adnotacje (
@interface). - Klasy abstrakcyjne.
Interfejsy marker są preferowane, gdy trzeba oznaczyć atrybut klasy bez dodawania zachowania.