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पर