ExpertiDict

Java · Avançado · Inglês · Técnico

wildcard

/ˈwaɪldkɑrd/substantivo

Curinga ? em tipos genéricos, como List<? extends Number> ou List<?>, que representa um tipo desconhecido e relaxa a invariância dos genéricos.

Onde usar

Aparece em assinaturas de métodos que aceitam várias listas: soma(List<? extends Number>). Em review: 'esse parâmetro deveria ser wildcard'.

Em código

double soma(List<? extends Number> l) {
  double t = 0;
  for (Number n : l) t += n.doubleValue();
  return t;
}
soma(List.of(1, 2.5)); // aceita ambos
// l.add(1) não compila dentro de soma

Exemplos

Take a List<? extends Number> so it accepts Integer and Double lists.

Receba uma List<? extends Number> para aceitar listas de Integer e de Double.

You can't add to a list declared with an extends wildcard.

Não dá para adicionar a uma lista declarada com wildcard extends.

Cuidado

Com ? extends você lê, mas não adiciona (exceto null); com ? super você escreve, mas só lê Object.

Sinônimos

curinga

Veja também

Todos os termos de Java