Sizin durumunuzda döküm gerekmiyorsa, toString () çağrısına ihtiyacınız var.
Integer i = 33;
String s = i.toString();
s = String.valueOf(i);
s = "" + i;
Döküm. O nasıl çalışır?
Verilen:
class A {}
class B extends A {}
(A)
|
(B)
B b = new B();
A a = b;
a = (A)b;
b = (B)a;
A ve B aynı miras ağacında ve bunu yapabiliriz:
a = new A();
b = (B)a;
Derleyici, çalışma zamanında muhtemelen çalışabilecek şeylere izin vermelidir. Bununla birlikte, derleyici, dökümün muhtemelen çalışamayacağını% 100 bilirse, derleme başarısız olur.
Verilen:
class A {}
class B1 extends A {}
class B2 extends A {}
(A)
/ \
(B1) (B2)
B1 b1 = new B1();
B2 b2 = (B2)b1;
Hata: Dönüştürülemez tipler B1 ve B2. Derleyici, oyuncu kadrosunun muhtemelen işe yaramayacağını% 100 biliyor. Ancak derleyiciyi aldatabilirsiniz:
B2 b2 = (B2)(A)b1;
ama yine de çalışma zamanında:
"Main" iş parçacığında istisna java.lang.ClassCastException: B1, B2'ye dönüştürülemez
Senin durumunda:
(Nesne)
/ \
(Tamsayı) (Dize)
Integer i = 33;
String s = (String)(Object)i;
çalışma zamanında: "main" iş parçacığında özel durum java.lang.ClassCastException: java.lang.Integer java.lang.String'e dönüştürülemez
toString()
onu bir String'e dönüştürecek bir yöntemi vardır. Birkaç yanıtın işaret ettiği gibi, kullanmanız gereken budur. (Bazı nesnelertoString()
için çok kullanışlı bir dizge döndürmez , ancakInteger
muhtemelen tam olarak istediğinizi yapar.)