Sobes.tech
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.