5
बर्ताव करता है यहां प्रत्यक्ष होना करने के लिए एक उदाहरण है:जावा जेनेरिक्स: ArrayList (असीम वाइल्डकार्ड प्रकार) पर, जोड़ सकते हैं और addAll तरीकों को अलग ढंग से
ArrayList <?> x = new ArrayList();
ArrayList y = new ArrayList();
x.add("abc"); // Clause 1. Compilation error - No problemo. Understood.
x.addAll(y); // Clause 2. No compilation error
असीम वाइल्डकार्ड के लिए, एक नहीं जोड़ सकते। अंतिम वक्तव्य पर कोई संकलन त्रुटि क्यों नहीं है?
ठीक है। मैं अर्थ देखता हूँ। क्लॉज 1 असफल हो जाएगा - चूंकि प्रकार ज्ञात है और यह सामान्य नियम का पालन करता है जहां असंबद्ध वाइल्डकार्ड अतिरिक्त रोकता है। खंड 2, चूंकि प्रकार तत्व अज्ञात है, यह मिश्रण विरासत और जेनेरिक कोड के सामान्य नियम का उपयोग करता है। क्या इसे मैंने ठीक तरह से लिया? – yapkm01
हाँ - कच्चे प्रकार के मामले में, सभी जेनेरिक सामान को त्याग दिया जाता है। – Bozho
@ yapkm01 जेनेरिक जहां भाषा में देर से जोड़ा गया था, इसलिए उन्हें ऐसे तरीके से डिजाइन किया जाना था जो मौजूदा गैर जेनेरिक पुस्तकालयों की बड़ी संख्या के साथ आसान बातचीत की अनुमति दे, जिसके परिणामस्वरूप संकलक कच्चे प्रकार की उपस्थिति में जेनरिक को अनदेखा करता है। – josefx