Sobes.tech
Junior — Middle

Můžete uvést konkrétní příklad použití principu PECS ve vývoji softwaru?

sobes.tech AI

Odpověď od AI

Princip PECS (Producer Extends, Consumer Super) pomáhá správně používat generika v Javě, aby bylo zajištěno flexibilitu a bezpečnost typů při práci s kolekcemi.

Příklad: pokud metoda přijímá kolekci, ze které pouze čte objekty (výrobce), deklaruje se parametr typu s extends. Pokud metoda pouze přidává objekty do kolekce (spotřebitel), používá se super.

import java.util.List;

// Metoda, která čte prvky z listu (Výrobce)
public void processElements(List<? extends Number> list) {
    for (Number n : list) {
        System.out.println(n);
    }
}

// Metoda, která přidává prvky do listu (Spotřebitel)
public void addElements(List<? super Integer> list) {
    list.add(10);
    list.add(20);
}

Zde List<? extends Number> zajišťuje, že je bezpečné číst prvky jako Number, ale nelze přidávat nové, zatímco List<? super Integer> umožňuje přidávat Integer a jeho podtřídy, ale čtení vrací Object.