J'ai une question sur Java. J'ai un objet [] code> (Java par défaut, non défini par l'utilisateur) et je veux le convertir en une chaîne [] code>. Quelqu'un peut-il m'aider? merci. p>
5 Réponses :
Ceci est la conversion
Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);
Avoir objet code> comme identifiant semble être une mauvaise idée, et le casting que vous suggère de résultat dans un ClasscastException code>.
Cela ne fonctionne pas: String [] Strarr = (chaîne []) Objectarr [];
Un autre problème: si le tableau d'objets arrive à contenir NULL, vous obtiendrez une NPE avec cette solution. Mieux vaut traverser string.valueof b> comme je fais dans ma réponse.
String [] ferrier = (string []) ObjectArt; Cela ne fonctionnera toujours pas!
(Sauf si l'objectel est en fait une chaîne-tableau, mais je doute que ce soit)
Bien sûr, mais un objet [] code> variable pourrait contenir une chaîne [] code>. Essayez par exemple objet [] objs = nouvelle chaîne [] {"Bonjour", "World"}; Code> (Cependant, comme je l'ai dit, je doute que c'est le cas ici.)
@nanda @aioobe merci, a mis à jour la réponse finale
Aiobe: J'essaie ceci: Objet [] Objs = nouvelle chaîne [] {"Bonjour", "World"}; ferrier = (string []) ObjetAR; Toujours
Nanda: Il devrait être (chaîne []) objs code> à la fin :-)
@nanda oui vous êtes correct, il vous donnera Classcastexception @ Runtime car nous ne sommes pas sûrs de l'objet de l'objet
@ org.life.java, mais les deux "Tweaks" donneront une exception ArrayStoreException si vous avez quelque chose que des cordes dans le tableau d'objets cependant.
Il devrait être (string []) objs à la fin :-): - / pouvez-vous écrire un code dans lequel string [] strarr = (chaîne []) Objectarr; Ne jette aucune exception?
@Nanda: objet [] objs = nouvelle chaîne [] {"Bonjour", "World"}; String [] ferrier = (chaîne []) Objs; code>
Je pense que c'est le moyen le plus simple si toutes les entrées d'objector sont en chaîne:
Donne une exception de classement si vous avez autre chose que des chaînes dans le tableau d'objets ...
Pas si vous suivez mes instructions :) :): Je pense que c'est le moyen le plus simple si toutes les entrées d'objectarr sont string i>:
Casting simplement comme ça Essayez quelque chose comme ceci: P> chaîne [] strings = (string []) ObjectAry; code> ne fonctionnera probablement pas. String[] strings = asStrings("hello world", -1.0, 5);
Il ne gérera pas NPE, avec un tableau cela pourrait être souvent le cas.
Ops. Il devrait être string.valueof code> (l'a eu dans une révision antérieure :-) corrigée. Merci.
Je suppose que vous pouvez également utiliser Système. ArrayCopy
System.arraycopy(objarray, 0, strarray, 0, objarray.length);
... et fourni Objarray ne contient que des chaînes ... Sinon, vous rencontrez une exception ArrayStoreException.
Solution Java 8:
String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);
D'où vient cet objet []?
@RickyClarkson Merci Rick, c'est un bon point pour éviter une boîte de reproduction de boxe redondante.