"और अब, डिएगो से एक छोटा सबक। संक्षिप्त और सटीक। संदर्भ प्रकार के रूपांतरणों के बारे में।"
"ऑब्जेक्ट चर के साथ शुरू करते हैं। आप इस तरह के एक चर ( विस्तार रूपांतरण ) के लिए कोई संदर्भ प्रकार निर्दिष्ट कर सकते हैं। हालांकि, दूसरी दिशा में असाइनमेंट करने के लिए ( संकीर्ण रूपांतरण ), आपको स्पष्ट रूप से एक कास्ट ऑपरेशन इंगित करना होगा:"
कोड | विवरण |
---|---|
|
एक विशिष्ट चौड़ा संदर्भ रूपांतरण |
|
एक विशिष्ट संकुचन संदर्भ रूपांतरण |
|
व्यापक रूपांतरण। |
|
रनटाइम त्रुटि! आप एक स्ट्रिंग संदर्भ के लिए एक इंटीजर संदर्भ नहीं डाल सकते हैं। |
|
रनटाइम त्रुटि! आप किसी फ़्लोट संदर्भ में पूर्णांक संदर्भ नहीं डाल सकते हैं। |
|
उसी प्रकार में रूपांतरण। एक संकुचित संदर्भ रूपांतरण। |
" एक चौड़ा या संकुचित संदर्भ रूपांतरण किसी भी तरह से वस्तु को नहीं बदलता है। संकुचन (या चौड़ा) भाग विशेष रूप से इस तथ्य को संदर्भित करता है कि असाइनमेंट ऑपरेशन में चर और उसके नए मूल्य की टाइप-चेकिंग शामिल है (शामिल नहीं है)। "
"यह दुर्लभ उदाहरण है जहां सब कुछ स्पष्ट है।"
" इन उदाहरणों में त्रुटियों से बचने के लिए , हमारे पास यह पता लगाने का एक तरीका है कि ऑब्जेक्ट चर द्वारा किस प्रकार का संदर्भ दिया गया है: "
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
"जब तक आप वस्तु के प्रकार के बारे में 100% सुनिश्चित नहीं हो जाते, तब तक आपको प्रत्येक व्यापक रूपांतरण से पहले यह जांच करनी चाहिए।"
"समझ गया।"
GO TO FULL VERSION