আপনার ক্ষেত্রে কাস্টিংয়ের দরকার নেই, আপনাকে টু স্ট্রিং () কল করতে হবে।
Integer i = 33;
String s = i.toString();
s = String.valueOf(i);
s = "" + i;
ঢালাই. এটা কিভাবে কাজ করে?
প্রদত্ত:
class A {}
class B extends A {}
(ক)
|
(খ)
B b = new B();
A a = b;
a = (A)b;
b = (B)a;
একই উত্তরাধিকারী গাছের ক এবং খ এবং আমরা এটি করতে পারি:
a = new A();
b = (B)a;
সংকলকটিকে অবশ্যই এমন জিনিসগুলি মঞ্জুর করতে হবে যা সম্ভবত রানটাইমের সময় কাজ করতে পারে। তবে, যদি সংকলকটি 100% দিয়ে জানেন যে কাস্ট সম্ভবত কাজ করতে পারে না, সংকলন ব্যর্থ হবে।
প্রদত্ত:
class A {}
class B1 extends A {}
class B2 extends A {}
(ক)
/ \
(বি 1) (বি 2)
B1 b1 = new B1();
B2 b2 = (B2)b1;
ত্রুটি: অবিচ্ছিন্ন প্রকারের বি 1 এবং বি 2। সংকলক 100% সহ জানেন যে কাস্ট সম্ভবত কাজ করতে পারে না। তবে আপনি সংকলককে প্রতারণা করতে পারেন:
B2 b2 = (B2)(A)b1;
তবে যাইহোক রানটাইম এ:
থ্রেড "মূল" java.lang.ClassCastException: B1 কে বি 2 তে কাস্ট করা যায় না Ex
আপনার ক্ষেত্রে:
(অবজেক্ট)
/ \
(পূর্ণসংখ্যা) (স্ট্রিং)
Integer i = 33;
String s = (String)(Object)i;
রানটাইমের সময়: "মূল" থ্রেড ব্যতীত "java.lang.ClassCastException: java.lang.Integer java.lang.String এ কাস্ট করা যাবে না
toString()
পদ্ধতি রয়েছে যা এটিকে স্ট্রিংয়ে রূপান্তর করবে। বেশ কয়েকটি উত্তর যেমন নির্দেশ করে, আপনার ব্যবহার করা উচিত। (কিছু কিছু অবজেক্টের জন্যtoString()
খুব কার্যকর স্ট্রিং ফিরিয়ে দেয় না তবেInteger
এটি সম্ভবত আপনি যা চান ঠিক