ExpertiDict

Java · Intermediário · Português · Técnico

instanceof com padrão

/ˈĩstɐ̃s ɔv kõ paˈdɾɐ̃w/substantivo

Forma do instanceof que já declara uma variável do tipo testado, como obj instanceof String s, dispensando o cast manual depois da verificação.

Onde usar

Aparece ao refatorar equals e cadeias de instanceof seguido de cast. Reduz repetição e erros de digitação.

Em código

static int tamanho(Object o) {
  if (o instanceof String s) {
    return s.length();
  }
  if (!(o instanceof List<?> l)) return -1;
  return l.size();
}

Exemplos

Troca esse instanceof seguido de cast por instanceof com padrão.

A variável do padrão só existe dentro do if.

Cuidado

A variável só vale onde o compilador prova que o teste foi verdadeiro; fora desse escopo ela não existe.

Sinônimos

pattern matching para instanceof

Veja também

Todos os termos de Java