Sobes.tech
Junior

Prečo v niektorých rozhraniach nie sú definované metódy?

sobes.tech AI

Odpoveď od AI

Markerové rozhrania (označovacie rozhrania) ne definujú metódy. Slúžia na označenie triedy, naznačujúc, že má určitú vlastnosť alebo schopnosť.

Príklady markerových rozhraní:

  • java.io.Serializable: Označuje triedu, ktorej objekty je možné serializovať.
  • java.lang.Cloneable: Označuje triedu, ktorej objekty je možné klonovať (podporuje metódu clone()).
  • java.util.RandomAccess: Označuje zoznamy, ktoré podporujú rýchly (konštantný čas) náhodný prístup k svojim prvkom.

Použitie markerových rozhraní umožňuje:

  • Identifikovať triedy: Kontrolovať typ objektu pomocou operátora instanceof.
    // kontrola, či je objekt serializovateľný
    if (object instanceof Serializable) {
        // vykonanie serializácie
    }
    
  • Meniť správanie: API môže meniť svoje správanie v závislosti od toho, či trieda implementuje markerové rozhranie. Napríklad, ak zoznam implementuje RandomAccess, operácie nad ním môžu byť optimalizované.
  • Obmedziť prístup: Niektoré API môžu vyžadovať, aby objekty, ktoré im sú odovzdané, implementovali určité markerové rozhranie.
  • Atribúty: V modernejších prístupoch sa mnoho scenárov použitia markerových rozhraní realizuje pomocou anotácií. Napriek tomu sa markerové rozhrania stále používajú v štandardnej knižnici Java a v legacy kóde.