1) तार्किक अंतर क्या है?
ऊपर: एक संग्रह सामान्य प्रकार के बिना घोषित किया जा सकता है। इसे raw type कहा जाता है। संग्रह तब किसी भी प्रकार का संग्रह रख सकता है। चूंकि, एक कच्चे टाइप किए गए संग्रह के साथ, रनटाइम पर स्ट्रिंग्स का संग्रह एक रनटाइम अपवाद के कारण पूर्णांक के संग्रह के रूप में उपयोग करता है, इसलिए संकलक आमतौर पर चेतावनी फेंक देगा। चूंकि आपने उपर्युक्त उदाहरण में संग्रह टाइप नहीं किया है क्योंकि संकलक इन रनटाइम अपवादों को रोक नहीं सकता है। अगर आपको पता है कि यह क्या है और पता है कि आप क्या कर रहे हैं तो चेतावनी को अनदेखा किया जा सकता है।
नीचे: लेकिन संग्रह के रूप में घोषित एक चर < स्ट्रिंग > किसी भी प्रकार का संग्रह नहीं रख सकता है। यह को प्रकार स्ट्रिंग का संग्रह होना चाहिए।यह मजबूत टाइप है। संकलक इसे एक त्रुटि के रूप में देखने के लिए सही है।
2) उपर्युक्त स्निपेट क्यों संकलक त्रुटि का कारण नहीं बनता है?
जावा strong typed है, जो type safety सुनिश्चित करता है। उपरोक्त स्निपेट सुरक्षित प्रकार नहीं है, लेकिन फिर भी जावा द्वारा अनुमत है। यह शायद ऐतिहासिक कारणों से है: जेनरिक केवल जावा 1.5 के साथ पेश किए गए थे, इसलिए अगर उपरोक्त स्निपेट ने संकलन त्रुटि उत्पन्न की होगी तो अधिकांश जावा 1.4 कोड जावा 1.5 कंपाइलर में टूटा होगा।
प्रत्येक प्रोग्रामिंग भाषा ऐसी पिछड़े संगत तरीके से विकसित नहीं होती है (उदाहरण के लिए PHP)। जाहिर है पिछली संगतता जावा 1.5 को पेश करते समय टाइप सुरक्षा पर मूल्यवान थी।
स्रोत
2013-01-06 13:35:31
पहले को 'कच्ची प्रकार "चेतावनी देना चाहिए। कंपाइलर का ध्यान रखें। अपने कोड लिंट को मुक्त रखना एक अच्छा विचार है। –