PECS принциби эмне жана ал Javaда кантип колдонулат?
sobes.tech AI
AIден жооп
PECS принциби (Producer Extends Consumer Super) — бул Java гениериктериндеги wildcard-типтер менен иштөөдө extends жана super ачкыч сөздөрүн качан колдонуу керектигин аныктоочу мнемоникалык эреже:
-
Producer (Өндүрүүчү): Эгер сиз гениерик параметрин маалыматтарды алуу үчүн колдонуп жатсаңыз (элементтерди коллекциядан чыгарып жатсаңыз),
extendsменен wildcard колдонушуңуз керек. Коллекция маалыматтын өндүрүүчүсү катары кызмат кылат.? extends Tтипи "T же анын подкласстары" дегенди билдирет. Элементтерди коопсуз окулушу мүмкүн, бирок мындай коллекцияга элементтерди кошуу (nullдан тышкары) мүмкүн эмес. -
Consumer (Тамактануучу): Эгер сиз гениерик параметрин маалыматтарды кошуу үчүн колдонуп жатсаңыз (элементтерди коллекцияга салуу),
superменен wildcard колдонушуңуз керек. Коллекция маалыматтын тамактануучу катары кызмат кылат.? super Tтипи "T же анын суперкласстары" дегенди билдирет. Тартиптүү кошуу мүмкүн, бирок окулганда объект катары алынады.
Javaда колдонуу:
Wildcard-типтер (?) менен колдонулат, APIнин ийкемдүүлүгүн жогорулатуу үчүн, коллекциялар менен иштегенде же башка гениерик типтер менен иштегенде, кеңири типтер менен иштөөгө мүмкүндүк берет, типтин коопсуздугун сактап калуу менен.
Мисалдар:
// Өндүрүүчү мисал
// printAll методу Listтен окулат
public void printAll(List<? extends Number> list) {
// Элементтерди Number катары окутуу мүмкүн (же Object)
for (Number num : list) {
System.out.println(num);
}
// Элементтерди кошуу мүмкүн эмес (nullдан тышкары)
// list.add(123); // Компиляция ката
}
// Тамактануучу мисал
// addNumbers методу Listке кошот
public void addNumbers(List<? super Integer> list) {
// Integer же анын подкласстары кошулушу мүмкүн
list.add(1);
list.add(new Integer(2));
// list.add(new Double(3.0)); // Компиляция ката
// Окулганда Object болот
Object o = list.get(0);
}