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 metoduclone()).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.