En su caso, no necesita conversión, necesita llamar a String().
Integer i = 33;
String s = i.toString();
//or
s = String.valueOf(i);
//or
s = "" + i;
Fundición. ¿Como funciona?
dado:
class A {}
class B extends A {}
(A)
|
(B)
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 y B en el mismo árbol de herencia y podremos esto:
a = new A();
b = (B)a; // again downcast. Compiles but fails later, at runtime: java.lang.ClassCastException
el compilador debe permitir que las cosas que posiblemente podrían funcionar en tiempo de ejecución . Sin embargo, si el compilador sabe con un 100% que el molde no podría funcionar, la compilación fallará.
Dado:
class A {}
class B1 extends A {}
class B2 extends A {}
(A)
/ \
(B1) (B2)
B1 b1 = new B1();
B2 b2 = (B2)b1; // B1 can't ever be a B2
de error: no convertible tipos B1 y B2. El compilador sabe con un 100% que el yeso no podría funcionar. Pero se puede engañar al compilador:
B2 b2 = (B2)(A)b1;
pero de todos modos en tiempo de ejecución:
Excepción en el hilo "principal" java.lang.ClassCastException: B1 no se puede convertir a B2
en su caso:
(Object)
/ \
(Integer) (String)
Integer i = 33;
//String s = (String)i; - compiler error
String s = (String)(Object)i;
en tiempo de ejecución: Excepción en el enhebrar java.lang.ClassCastException "principal": java.lang.Integer no se puede convertir a java.lang.String
_ "Cada objeto se puede lanzar a Cadena "_ -- Esto está mal. Por el contrario, cada objeto tiene un método 'toString()' que lo convertirá en una Cadena. Como varias respuestas señalan, eso es lo que debes usar. (Para algunos objetos, 'toString()' no devuelve una cadena muy útil, pero para 'Integer', probablemente haga exactamente lo que usted desea). –
' "" + myIntegerObject' también funciona :) –