Sobes.tech
Junior

Zašto u nekim interfejsima nisu definisane metode?

sobes.tech АИ

Одговор од АИ

Marker interfejsi (označavajući interfejsi) ne definišu metode. Oni služe za označavanje klase, ukazujući na to da ona poseduje određenu osobinu ili mogućnost.

Primeri marker interfejsa:

  • java.io.Serializable: Označava klasu čiji objekti mogu biti serijalizovani.
  • java.lang.Cloneable: Označava klasu čiji objekti mogu biti klonirani (podržava metodu clone()).
  • java.util.RandomAccess: Označava liste koje podržavaju brzi (konstantno vreme) slučajni pristup svojim elementima.

Korišćenje marker interfejsa omogućava:

  • Identifikaciju klasa: Proveru tipa objekta na pripadnost određenoj grupi pomoću operatora instanceof.
    // provera da li je objekat serializabilan
    if (object instanceof Serializable) {
        // izvršiti serializaciju
    }
    
  • Menjanje ponašanja: API-ji mogu menjati svoje ponašanje u zavisnosti od toga da li klasa implementira marker interfejs. Na primer, ako lista implementira RandomAccess, operacije nad njom mogu biti optimizovane.
  • Ograničavanje pristupa: Neki API-ji mogu zahtevati da objekti koje primaju implementiraju određeni marker interfejs.
  • Atributi: U modernijim pristupima, mnoga scenarija korišćenja marker interfejsa realizuju se pomoću anotacija. Međutim, marker interfejsi i dalje se koriste u Java standardnoj biblioteci i u legacy kodu.