సూచన రకం మార్పిడులు - 1

"మరియు ఇప్పుడు, డియెగో నుండి ఒక చిన్న పాఠం. సంక్షిప్త మరియు పాయింట్. సూచన రకం మార్పిడుల గురించి."

"ఆబ్జెక్ట్ వేరియబుల్స్‌తో ప్రారంభిద్దాం. మీరు అలాంటి వేరియబుల్‌కి ఏదైనా రిఫరెన్స్ రకాన్ని కేటాయించవచ్చు ( విస్తరిస్తున్న మార్పిడి ). అయితే, అసైన్‌మెంట్‌ను ఇతర దిశలో ( సంకుచిత మార్పిడి ) చేయడానికి , మీరు తప్పనిసరిగా తారాగణం ఆపరేషన్‌ని స్పష్టంగా సూచించాలి:"

కోడ్ వివరణ
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% ఖచ్చితంగా తెలియకపోతే, ప్రతి విస్తరణ మార్పిడికి ముందు మీరు ఈ తనిఖీని నిర్వహించాలి."

"దొరికింది."