9
votes

Comment convertir l'objet [] en chaîne [] en Java?

J'ai une question sur Java. J'ai un objet [] (Java par défaut, non défini par l'utilisateur) et je veux le convertir en une chaîne [] . Quelqu'un peut-il m'aider? merci.


2 commentaires

D'où vient cet objet []?


@RickyClarkson Merci Rick, c'est un bon point pour éviter une boîte de reproduction de boxe redondante.


5 Réponses :


19
votes

Ceci est la conversion

 Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);


13 commentaires

Avoir objet comme identifiant semble être une mauvaise idée, et le casting que vous suggère de résultat dans un ClasscastException .


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 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 [] variable pourrait contenir une chaîne [] . Essayez par exemple objet [] objs = nouvelle chaîne [] {"Bonjour", "World"}; (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 à 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;



2
votes

Je pense que c'est le moyen le plus simple si toutes les entrées d'objector sont en chaîne: xxx


2 commentaires

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 :



4
votes

Casting simplement comme ça chaîne [] strings = (string []) ObjectAry; code> ne fonctionnera probablement pas.

Essayez quelque chose comme ceci: P>

String[] strings = asStrings("hello world", -1.0, 5);


2 commentaires

Il ne gérera pas NPE, avec un tableau cela pourrait être souvent le cas.


Ops. Il devrait être string.valueof (l'a eu dans une révision antérieure :-) corrigée. Merci.



2
votes

Je suppose que vous pouvez également utiliser Système. ArrayCopy

System.arraycopy(objarray, 0, strarray, 0, objarray.length);


1 commentaires

... et fourni Objarray ne contient que des chaînes ... Sinon, vous rencontrez une exception ArrayStoreException.



2
votes

Solution Java 8:

String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);


0 commentaires