O que é PECS (Producer Extends Consumer Super) em genéricos Java?
Olá a todos! Já escrevo em Java há alguns meses, mas ainda me confundo com wildcards em genéricos. Li sobre PECS, mas na prática ainda não entendo quando usar `? extends T` e quando usar `? super T`.
Aqui está um exemplo concreto que me deixa confuso. Tenho um método que deve copiar elementos de uma lista para outra:
```java
public static void copy(List> src, List> dest) {
for (Object item : src) {
dest.add(item); // Erro de compilação!
}
}
```
O compilador reclama de `dest.add(item)`. Entendo que preciso usar bounded wildcards, mas não consigo entender quais exatamente.
Suponha que eu tenha uma hierarquia de classes: `Animal` → `Dog` → `Puppy`. Quero escrever um método que:
1. Leia objetos de uma lista (por exemplo, uma lista de `Dog`)
2. Escreva-os em outra lista (por exemplo, uma lista de `Animal`)
Como declarar corretamente os tipos para `src` e `dest`? E o que essa sigla PECS significa? Agradeço por uma explicação detalhada com exemplos.
No answers yet.
Faça login para deixar uma resposta
Blogs
Como escrever uma API REST em PHP em 30 minutos: guia passo a passo
Monitoramento de aplicações Rust: métricas e alertas em nível avançado
Geração de strings aleatórias em JavaScript: 5 abordagens com código
PHP JSON: retorne dados rapidamente e sem erros