Sobes.tech
Junior

Miks mõnedes liidestes meetodeid ei määratleta?

sobes.tech AI

Vastus AI-lt

Marker interfaces (märgistusliidesed) ei määra meetodeid. Nad on mõeldud klassi märgistamiseks, näidates, et tal on teatud omadus või võimalus.

Näited marker interfaces:

  • java.io.Serializable: Märgistab klassi, mille objektid võivad olla serialiseeritud.
  • java.lang.Cloneable: Märgistab klassi, mille objektid võivad olla kloonitud (toetab meetodit clone()).
  • java.util.RandomAccess: Märgistab listid, mis toetavad kiiret (konstantse aja) juhuslikku juurdepääsu oma elementidele.

Marker interfaces kasutamine võimaldab:

  • Klasside tuvastamist: Kontrollida objekti tüüpi instanceof operaatoriga.
    // kontroll, kas objekt on serialiseeritav
    if (object instanceof Serializable) {
        // serialiseerimine
    }
    
  • Käitumise muutmist: API-d võivad muuta oma käitumist sõltuvalt sellest, kas klass implementeerib marker interface'i. Näiteks, kui list implementeerib RandomAccess, võivad operatsioonid sellel olla optimeeritud.
  • Juurdepääsu piirangut: Mõned API-d võivad nõuda, et neile edastatavad objektid implementeeriksid teatud marker interface'i.
  • Märgendid: Kaasaegsemates lähenemisviisides realiseeritakse paljusid marker interface kasutusstsenaariume annotatsioonide abil. Kuid marker interfaces on endiselt kasutusel Java standardraamatukogus ja legacy-koodis.