Sobes.tech
Junior

Proč v některých rozhraních nejsou definovány metody?

sobes.tech AI

Odpověď od AI

Markerové rozhraní (markerové rozhraní) ne definují metody. Slouží k označení třídy, naznačujíc, že má určitý charakter nebo schopnost.

Příklady markerových rozhraní:

  • java.io.Serializable: Označuje třídu, jejíž objekty lze serializovat.
  • java.lang.Cloneable: Označuje třídu, jejíž objekty lze klonovat (podporuje metodu clone()).
  • java.util.RandomAccess: Označuje seznamy, které podporují rychlý (konstantní čas) náhodný přístup ke svým prvkům.

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

  • Identifikovat třídy: Kontrolovat typ objektu pomocí operátoru instanceof.
    // kontrola, zda je objekt serializovatelný
    if (object instanceof Serializable) {
        // provést serializaci
    }
    
  • Měnit chování: API může měnit své chování v závislosti na tom, zda třída implementuje markerové rozhraní. Například pokud seznam implementuje RandomAccess, operace nad ním mohou být optimalizovány.
  • Omezit přístup: Některá API mohou vyžadovat, aby objekty, které přijímají, implementovaly určité markerové rozhraní.
  • Anotace: V modernějších přístupech je mnoho scénářů použití markerových rozhraní realizováno pomocí anotací. Nicméně markerová rozhraní jsou stále používána v standardní knihovně Java a v legacy kódu.