जावा जेनेरिक्स में PECS (Producer Extends Consumer Super) क्या है?
सभी को नमस्ते! मैं कुछ महीनों से Java में लिख रहा हूँ, लेकिन अब भी जेनेरिक्स में wildcard को लेकर भ्रमित हूँ। मैंने PECS के बारे में पढ़ा, लेकिन व्यवहार में अब भी समझ नहीं आता कि `? extends T` कब उपयोग करना है और `? super T` कब।
यहाँ एक विशिष्ट उदाहरण है जो मुझे भ्रमित करता है। मेरे पास एक method है जो एक सूची से दूसरी सूची में तत्वों को कॉपी करना चाहिए:
```java
public static void copy(List> src, List> dest) {
for (Object item : src) {
dest.add(item); // कम्पाइलेशन एरर!
}
}
```
कम्पाइलर `dest.add(item)` पर एरर देता है। मैं समझता हूँ कि bounded wildcards का उपयोग करना आवश्यक है, लेकिन समझ नहीं पा रहा कि कौन से।
मान लीजिए, मेरे पास क्लासेज का एक hierarchy है: `Animal` → `Dog` → `Puppy`। मैं एक method लिखना चाहता हूँ जो:
1. सूची से ऑब्जेक्ट्स पढ़ता है (जैसे, `Dog` की सूची)
2. Z