Sobes.tech
Junior — Middle

Può fornire un esempio concreto di applicazione del principio PECS nello sviluppo del software?

sobes.tech AI

Risposta dell'AI

Il principio PECS (Producer Extends, Consumer Super) aiuta a usare correttamente i generici in Java per garantire flessibilità e sicurezza dei tipi quando si lavora con le collezioni.

Esempio: se un metodo deve accettare una collezione da cui legge solo oggetti (produttore), il parametro di tipo si dichiara con extends. Se il metodo aggiunge solo oggetti alla collezione (consumatore), si usa super.

import java.util.List;

// Metodo che legge elementi da una lista (Produttore)
public void processElements(List<? extends Number> list) {
    for (Number n : list) {
        System.out.println(n);
    }
}

// Metodo che aggiunge elementi a una lista (Consumatore)
public void addElements(List<? super Integer> list) {
    list.add(10);
    list.add(20);
}

Qui, List<? extends Number> garantisce che si possano leggere elementi come Number in modo sicuro, ma non si possono aggiungere nuovi elementi, mentre List<? super Integer> permette di aggiungere Integer e sue sottoclassi, ma la lettura restituisce Object.