Қоидаи PECS чист ва чӣ гуна дар Java истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Prinsipi PECS (Producer Extends Consumer Super) — bu Java genetiklərində wildcard tipləri ilə işləyərkən extends və super açar sözlərinin nə zaman istifadə olunacağını müəyyən edən yadda saxlanılan qaydadır.
-
İstehsalçı (Producer): Əgər siz generik parametrdən məlumat almaq (koleksiyadan element çıxarmaq) üçün istifadə edirsinizsə,
extendsilə wildcarddan istifadə edin. Koleksiya məlumat istehsalçı kimi fəaliyyət göstərir.? extends Ttipi, "Tvə ya onun alt sinfi" mənasını verir. Siz elementləri təhlükəsiz şəkildəTkimi (və ya onun superklası) oxuya bilərsiniz, lakin belə bir kolleksiyaya element əlavə edə bilməzsiniz (null istisna olmaqla). -
İstehlakçı (Consumer): Əgər siz generik parametrdən məlumat əlavə etmək (elementləri kolleksiyaya qoymaq) üçün istifadə edirsinizsə,
superilə wildcarddan istifadə edin. Koleksiya məlumat istehlakçı kimi fəaliyyət göstərir.? super Ttipi, "Tvə ya onun superklası" mənasını verir. Siz təhlükəsiz şəkildəTtipli elementlər (və onun alt sinifləri) əlavə edə bilərsiniz, lakin oxuma zamanı onlarıObjectkimi alacaqsınız.
Java-da tətbiqi:
Wildcard tipləri (?) ilə istifadə olunur, bu API-lərin kolleksiyalar və ya digər generik tiplərlə işləməkdə elastikliyini artırır, onlara daha geniş tip diapazonu ilə işləməyə imkan verir və tip təhlükəsizliyini qoruyur.
Nümunələr:
// Producer nümunəsi
// printAll metodu List-dən oxuyur
public void printAll(List<? extends Number> list) {
// Elementləri Number kimi (və ya Object) oxuya bilərik
for (Number num : list) {
System.out.println(num);
}
// Elementlər əlavə edə bilmərik (null istisna olmaqla)
// list.add(123); // Kompilyasiya xətası
}
// Consumer nümunəsi
// addNumbers metodu List-ə elementlər əlavə edir
public void addNumbers(List<? super Integer> list) {
// Integer və ya onun alt siniflərini əlavə edə bilərik
list.add(1);
list.add(new Integer(2));
// list.add(new Double(3.0)); // Kompilyasiya xətası
// Oxuma zamanı Object alırıq
Object o = list.get(0);
}