PECS prinsipi nədir və Java-da necə tətbiq olunur?
sobes.tech Süni İntellekt
AI-dan cavab
PECS prinsipi (Producer Extends Consumer Super), Java nəsil növlərində wildcard tipləri ilə işləyərkən extends və super açar sözlərindən nə zaman istifadə ediləcəyini 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ə wildcard istifadə edin. Koleksiya məlumat istehsalçısı 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ə wildcard istifadə edin. Koleksiya məlumat istehlakçısı 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 (və ya Object) kimi 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);
}