Sobes.tech
Junior

Por que em algumas interfaces não definem métodos?

sobes.tech IA

Resposta da IA

Interfaces de marca (interfaces de marca) não definem métodos. Elas servem para marcar uma classe, indicando que ela possui uma característica ou capacidade específica.

Exemplos de interfaces de marca:

  • java.io.Serializable: Marca uma classe cujos objetos podem ser serializados.
  • java.lang.Cloneable: Marca uma classe cujos objetos podem ser clonados (suportam o método clone()).
  • java.util.RandomAccess: Marca listas que suportam acesso aleatório rápido (tempo constante) aos seus elementos.

O uso de interfaces de marca permite:

  • Identificar classes: Verificar o tipo de um objeto para determinar se pertence a um grupo específico usando o operador instanceof.
    // verificar se um objeto é serializável
    if (object instanceof Serializable) {
        // realizar serialização
    }
    
  • Alterar comportamento: As APIs podem modificar seu comportamento dependendo de se a classe implementa uma interface de marca. Por exemplo, se uma lista implementa RandomAccess, as operações sobre ela podem ser otimizadas.
  • Restringir acesso: Algumas APIs podem exigir que os objetos que recebem implementem uma interface de marca específica.
  • Anotações: Em abordagens mais modernas, muitos cenários de uso de interfaces de marca são implementados por meio de anotações. No entanto, interfaces de marca ainda são usadas na biblioteca padrão do Java e em código legado.