93 votes

Pourquoi ne peut-on pas convertir Integer en String en java?

J'ai trouvé une exception étrange:

 java.lang.ClassCastException: java.lang.Integer 
 cannot be cast to java.lang.String
 

Comment cela peut être possible? Chaque objet peut être converti en chaîne, n'est-ce pas?

Le code est:

 String myString = (String) myIntegerObject;
 

Merci.

150voto

Bhushan Points 3461

Pourquoi ce n'est pas possible:

Car les chaînes de caractères et de nombres Entiers ne sont pas dans la même hiérarchie d'Objets.

      Object
     /      \
    /        \
String     Integer

Le casting qui vous tentent, ne fonctionne que si ils sont dans la même hiérarchie, par exemple

      Object
     /
    /
   A
  /
 /
B

Dans ce cas, (A) objB ou (Object) objB ou (Object) objA fonctionnera.

Donc, comme d'autres l'ont déjà mentionné, pour convertir un entier en chaîne de caractères utilisez:

String.valueOf(integer)ou Integer.toString(integer) pour les primitifs,

ou

Integer.toString() pour l'objet.

45voto

Petar Minchev Points 24864

Non, Integer et String sont de types différents. Pour convertir un entier en chaîne, utilisez: String.valueOf(integer) , ou Integer.toString(integer) pour primitive ou Integer.toString() pour l'objet.

20voto

DiscGolfer Points 4655

Pour int types, utilisez:

 int myInteger = 1;
String myString = Integer.toString(myInteger);
 

Pour Integer types, utilisez:

 Integer myIntegerObject = new Integer(1);
String myString = myIntegerObject.toString();
 

6voto

andri Points 8237

Non. Chaque objet peut être converti en java.lang.Object et non en String . Si vous voulez une représentation sous forme de chaîne de n'importe quel objet, vous devez invoquer la méthode toString() ; ce n'est pas la même chose que de lancer l'objet dans une chaîne.

5voto

Luminously Points 281

Il suffit de faire "" + myInt pour le convertir implicitement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X