जावा जेनेरिक्स में 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 का उपयोग करना आवश्यक है, लेकिन यह नहीं समझ पा रहा कि कौन से।
मान लीजिए, मेरे पास एक class hierarchy है: `Animal` → `Dog` → `Puppy`। मैं एक method लिखना चाहता हूँ जो:
1. सूची से objects पढ़ता है (उदाहरण के लिए, `Dog` की सूची)
2. Z