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.