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 meetoditclone()).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
instanceofoperaatoriga.// 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.