आपके मामले में आपको कास्टिंग की आवश्यकता नहीं है, आपको कॉल करने की आवश्यकता है ()।
Integer i = 33;
String s = i.toString();
//or
s = String.valueOf(i);
//or
s = "" + i;
कास्टिंग। यह कैसे काम करता है?
दिया हुआ:
class A {}
class B extends A {}
(ए)
|
(बी)
B b = new B(); //no cast
A a = b; //upcast with no explicit cast
a = (A)b; //upcast with an explicit cast
b = (B)a; //downcast
एक ही वंशानुक्रम के पेड़ में A और B हम कर सकते हैं:
a = new A();
b = (B)a; // again downcast. Compiles but fails later, at runtime: java.lang.ClassCastException
संकलक को उन चीजों की अनुमति देनी चाहिए जो संभवतः रनटाइम पर काम कर सकते हैं। हालाँकि, यदि कंपाइलर 100% जानता है कि कलाकार संभवतः काम नहीं कर सकता है, तो संकलन विफल हो जाएगा।
दिया हुआ:
class A {}
class B1 extends A {}
class B2 extends A {}
(ए)
/ \
(बी 1) (बी 2)
B1 b1 = new B1();
B2 b2 = (B2)b1; // B1 can't ever be a B2
त्रुटि: असंगत प्रकार B1 और B2। संकलक 100% के साथ जानता है कि कलाकार संभवतः काम नहीं कर सकता है। लेकिन आप संकलक को धोखा दे सकते हैं:
B2 b2 = (B2)(A)b1;
लेकिन वैसे भी रनटाइम पर:
थ्रेड में मुख्य "java.lang.ClassCastException: B1 को B2 में नहीं डाला जा सकता है
आपके मामले में:
(ऑब्जेक्ट)
/ \
(पूर्णांक) (स्ट्रिंग)
Integer i = 33;
//String s = (String)i; - compiler error
String s = (String)(Object)i;
रनटाइम पर: थ्रेड में अपवाद "java.lang.ClassCastException: java.lang.Integer को java.lang.String में नहीं डाला जा सकता है
toString()
विधि होती है जो इसे एक स्ट्रिंग में बदल देगी। जैसा कि कई उत्तर बताते हैं, कि आपको क्या उपयोग करना चाहिए। (कुछ वस्तुओं के लिए,toString()
बहुत उपयोगी स्ट्रिंग वापस नहीं करता है , लेकिन इसके लिएInteger
, यह संभवतः वही करता है जो आप चाहते हैं।)