Sobes.tech
Junior — Middle

Czy może Pan/Pani podać konkretny przykład zastosowania zasady PECS w rozwoju oprogramowania?

sobes.tech AI

Odpowiedź od AI

Zasada PECS (Producer Extends, Consumer Super) pomaga poprawnie korzystać z generyków w Javie, zapewniając elastyczność i bezpieczeństwo typów podczas pracy z kolekcjami.

Przykład: jeśli metoda ma przyjmować kolekcję, z której tylko odczytuje obiekty (producent), parametr typu deklaruje się jako extends. Jeśli metoda tylko dodaje obiekty do kolekcji (konsument), używa się super.

import java.util.List;

// Metoda odczytująca elementy z listy (Producent)
public void processElements(List<? extends Number> list) {
    for (Number n : list) {
        System.out.println(n);
    }
}

// Metoda dodająca elementy do listy (Konsument)
public void addElements(List<? super Integer> list) {
    list.add(10);
    list.add(20);
}

Tutaj List<? extends Number> gwarantuje, że można bezpiecznie odczytywać elementy jako Number, ale nie można dodawać nowych, natomiast List<? super Integer> pozwala na dodawanie Integer i jego podklas, ale odczyt zwraca Object.