¿Qué es PECS (Producer Extends Consumer Super) en los genéricos de Java?
¡Hola a todos! Llevo varios meses programando en Java, pero todavía me confundo con los wildcards en los genéricos. Leí sobre PECS, pero en la práctica sigo sin entender cuándo usar `? extends T` y cuándo usar `? super T`.
Aquí hay un ejemplo concreto que me desconcierta. Tengo un método que debe copiar elementos de una lista a otra:
```java
public static void copy(List> src, List> dest) {
for (Object item : src) {
dest.add(item); // ¡Error de compilación!
}
}
```
El compilador se queja de `dest.add(item)`. Entiendo que necesito usar bounded wildcards, pero no puedo entender cuáles exactamente.
Supongamos que tengo una jerarquía de clases: `Animal` → `Dog` → `Puppy`. Quiero escribir un método que:
1. Lea objetos de una lista (por ejemplo, una lista de `Dog`)
2. Los escriba en otra lista (por ejemplo, una lista de `Animal`)
¿Cómo declaro correctamente los tipos para `src` y `dest`? ¿Y qué significa realmente esta abreviatura PECS? Agradecería una explicación detallada con ejemplos.
No answers yet.
Inicia sesión para dejar una respuesta