Avatar ·

Java जेनेरिक्स में <? super T> और <? extends T> के बीच क्या अंतर है?

नमस्ते साथियों! मैंने Java जेनेरिक्स सीखना शुरू किया है और wildcards (टेम्पलेट्स) से सामना हुआ। मैंने दस्तावेज़ीकरण पढ़ा और वीडियो देखे, लेकिन फिर भी मैं दो संरचनाओं में भ्रमित हूँ: `` और ``। \n\nमैं समझता हूँ कि `? extends T` का अर्थ है "कोई प्रकार जो T का उपप्रकार है", और `? super T` का अर्थ है "कोई प्रकार जो T का सुपरप्रकार है"। लेकिन व्यवहार में मुझे लगातार कंपाइलेशन त्रुटियाँ होती हैं। \n\nउदाहरण के लिए, मेरे पास List के साथ यह कोड है:\n\n```java\npublic class Test {\n public static void addNumbers(List list) {\n list.add(42); // यह काम करता है\n }\n \n public static void readNumbers(List list) {\n Integer num = list.get(0); // यह काम करता है\n list.add(42); // कंपाइलेशन त्रुटि! क्यों?\n }\n}\n```\n\nपर