Java · Avançado · Inglês · Técnico
wildcard
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 somaExemplos
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