Avatar ·

Java Generics में raw type क्या है और इनसे क्यों बचना चाहिए?

सभी को नमस्ते! मैं एक शुरुआती Java डेवलपर हूँ, generics सीख रहा हूँ और एक अजीब अवधारणा "raw type" पर आ गया हूँ। लगता है कि यह generics से संबंधित है, लेकिन पूरी तरह से समझ नहीं पा रहा हूँ। मान लीजिए, मेरे पास ऐसा कोड है: ```java List list = new ArrayList(); // क्या यह raw type है? list.add("string"); list.add(123); ``` कंपाइलर एक चेतावनी देता है, लेकिन कोड काम करता है। मैं लिस्ट में कुछ भी डाल सकता हूँ। लेकिन अगर मैं parameterized type का उपयोग करूँ: ```java List list2 = new ArrayList<>(); list2.add("string"); // list2.add(123); // कंपाइलेशन एरर ``` तो कंपाइलर त्रुटि देता है। क्या अंतर है? Raw type को बुरा अभ्यास क्यों माना जाता है? आखिर कोड तो काम करता है। मैंने सुना है कि raw types पिछड़ी संगतता (backward compatibility) के लिए मौजूद हैं, लेकिन नए कोड में इनका उपयोग क्यों करें?