Mis on PECS põhimõte ja kuidas seda Java-s rakendada?
sobes.tech AI
Vastus AI-lt
PECS printsiip (Producer Extends Consumer Super) on mnemooniline reegel, mis määrab, millal kasutada extends ja super võtmesõnu Java generiliste wildcard-tüüpide töötamisel:
-
Producer (Tootja): Kui kasutate gendertüüpi parameetrit andmete saamiseks (elementide välja võtmine kogust), kasutage wildcard koos
extends. Kogum toimib andmete tootjana.? extends Ttüüp tähendab "ükskõik milline T või selle alamklass". Saate turvaliselt lugeda elemente kuiT(või selle ülemklass), kuid ei saa sellesse kogusse elemente lisada (välja arvatudnull). -
Consumer (Tarbij): Kui kasutate gendertüüpi parameetrit andmete lisamiseks (elementide lisamine kogusse), kasutage wildcard koos
super. Kogum toimib andmete tarbijana.? super Ttüüp tähendab "ükskõik milline T või selle superklass". Saate turvaliselt lisadaTtüüpi elemente (või selle alamklasse), kuid lugedes saate neid Objectina.
Java kasutamine:
Kasutatakse wildcard-tüüpe (?), et suurendada API paindlikkust, töötades kogumitega või teiste gendertüüpidega, võimaldades neil töötada laiemas tüüpide vahemikus, säilitades samal ajal tübiturvalisuse.
Näited:
// Producer näide
// printAll meetod loeb Listist
public void printAll(List<? extends Number> list) {
// Võime lugeda elemente Numberina (või Objectina)
for (Number num : list) {
System.out.println(num);
}
// Ei saa lisada elemente (välja arvatud null)
// list.add(123); // Kompilatsiooni viga
}
// Consumer näide
// addNumbers meetod lisab Listi
public void addNumbers(List<? super Integer> list) {
// Võime lisada Integer või selle alamklasse
list.add(1);
list.add(new Integer(2));
// list.add(new Double(3.0)); // Kompilatsiooni viga
// Lugedes saame Objecti
Object o = list.get(0);
}