List<String> list = new ArrayList();
परिणामस्वरूप संकलक चेतावनी होगी।जावा 7 में टाइप अनुमान के लिए हीरा ऑपरेटर का उपयोग क्यों किया जाता है?
हालांकि निम्न उदाहरण किसी चेतावनी के बिना संकलित: List<String> list = new ArrayList<>();
मैं उत्सुक क्यों हीरा ऑपरेटर के शुरू में सभी की जरूरत है हूँ। यदि प्रकार तर्क अनुपस्थित है क्यों न सिर्फ निर्माता पर प्रकार निष्कर्ष है (के रूप में अपनी पहले से ही जावा में स्थिर तरीकों के लिए किया जाता है और गूगल अमरूद की तरह संग्रह पुस्तकालयों द्वारा शोषण)
संपादित: मैं देखा प्रारंभिक बिंदु के रूप millimoose उत्तर का उपयोग करना वास्तव में किस तरह का मिटा है और यह सिर्फ सभी प्रकार की जानकारी को हटा नहीं रहा है। संकलक वास्तव में थोड़ा अधिक (official doc से नकल) करता है:
- उनकी सीमा के साथ सामान्य प्रकार के सभी प्रकार पैरामीटर बदलें या वस्तु यदि प्रकार पैरामीटर असीम हैं। उत्पादित बाइटकोड, इसलिए, केवल सामान्य वर्ग, इंटरफेस, और विधियों में शामिल हैं।
- प्रकार सुरक्षा को संरक्षित रखने के लिए आवश्यक प्रकार डालें।
- विस्तारित जेनेरिक प्रकारों में बहुरूपता को संरक्षित करने के लिए पुल विधियों को उत्पन्न करें।
मैं इसे कच्चे प्रकार, जो संकलक बनाने का उपयोग करने से यह भेद करने के लिए है यह सोचते हैं रहा हूँ कुछ करना संगतता के लिए पूरी तरह से अलग। (इसमें एक कच्चे प्रकार के साथ एक अभिव्यक्ति को जेनेरिक शामिल करने वाले व्यक्ति से भिन्न रूप से संसाधित किया जाता है।) – millimoose
मैं शायद मिलीमोज़ से सहमत हूं, लेकिन यह देखते हुए कि जनरेटर को संकलक के दौरान मिटा दिया जाता है जो संकलक चेतावनी की पिछड़े संगतता के लिए नए ऑपरेटर ('केवल') पेश करता है सही महसूस नहीं करता है। –
पीछे की संगतता कंपाइलर चेतावनियों के लिए नहीं है। 'ऑब्जेक्ट एस = नया ऐरेलिस्ट()। (प्राप्त करें) जैसे स्टेटमेंट में' स्ट्रिंग एस = नया ऐरेलिस्ट() .get कहने के बजाय दाएं हाथ के पक्ष का परिणाम अलग-अलग हल किया गया है (पूर्व-जेनेरिक एल्गोरिदम का उपयोग करके)() '। यह तब भी लागू होता है जब आप 'इंटररेलिस्ट' को मध्यवर्ती चर में संग्रहीत करते हैं। –
millimoose