संदर्भ प्रकार रूपांतरणे - १

"आणि आता, डिएगोचा एक छोटा धडा. थोडक्यात आणि मुद्दा. संदर्भ प्रकार रूपांतरणांबद्दल."

"ऑब्जेक्ट व्हेरिएबल्सपासून सुरुवात करूया. तुम्ही अशा व्हेरिएबलला कोणताही संदर्भ प्रकार नियुक्त करू शकता ( रूपांतरण रुंद करणे ). तथापि, असाइनमेंट दुसर्‍या दिशेने करण्यासाठी ( संकुचित रूपांतरण ), तुम्ही स्पष्टपणे कास्ट ऑपरेशन सूचित केले पाहिजे:"

कोड वर्णन
String s = "mom";
Object o = s; // o stores a String
एक सामान्य रुंदीकरण संदर्भ रूपांतरण
Object o = "mom"; // o stores a String
String s2 = (String) o;
एक सामान्य संकुचित संदर्भ रूपांतरण
Integer i = 123; // o stores an Integer
Object o = i;
रुंदीकरण रूपांतरण.
Object o = 123; // o stores an Integer
String s2 = (String) o;
रनटाइम त्रुटी!
तुम्ही स्ट्रिंग संदर्भासाठी पूर्णांक संदर्भ कास्ट करू शकत नाही.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
रनटाइम त्रुटी!
तुम्ही फ्लोट संदर्भासाठी पूर्णांक संदर्भ कास्ट करू शकत नाही.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
त्याच प्रकारात रूपांतरण. एक संकुचित संदर्भ रूपांतरण.

" रुंदीकरण किंवा संकुचित संदर्भ रूपांतरण ऑब्जेक्टमध्ये कोणत्याही प्रकारे बदल करत नाही. अरुंद (किंवा रुंदीकरण) भाग विशेषत: असाइनमेंट ऑपरेशनमध्ये व्हेरिएबलचे टाइप-चेकिंग आणि त्याचे नवीन मूल्य समाविष्ट करते (समाविष्ट नाही) या वस्तुस्थितीचा संदर्भ देते. "

"हे दुर्मिळ उदाहरण आहे जिथे सर्वकाही स्पष्ट आहे."

" या उदाहरणांमधील त्रुटी टाळण्यासाठी ,  आमच्याकडे ऑब्जेक्ट व्हेरिएबलद्वारे कोणत्या प्रकाराचा संदर्भ आहे हे शोधण्याचा मार्ग आहे: "

कोड
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% खात्री असल्याशिवाय प्रत्येक रुंदीकरणाच्या रूपांतरणापूर्वी तुम्ही ही तपासणी करावी."

"समजले."