IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Débutant] Caster un Object en String[][]


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut [Débutant] Caster un Object en String[][]
    Bonjour à tous!

    Ma question est contenue dans le titre, j'utilise une méthode qui renvoie un Object, celui ci étant normalement un tableau de String à deux dimensions (donc un String[][]). J'ai essayé de caster à la volée mais je récupère une erreur java.lang.ClassCastException.

    Voilà comment je m'y prends :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[][] result = (String[][]) monService.invoke("WServices","getProductSheet", arguments);
    Si je remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object result =  monService.invoke("WServices","getProductSheet", arguments);
    J'obtiens alors bien un objet ressemblant à un String[][] puisqu'en faisant un affichage de cet Object à l'aide de la méthode toString() j'obtiens cet affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[24ZSB678, 100,00, Price], [34567FGH, 32 A, MaxCurrent], [5678900G, 220 V, MaxTension], [7FGHZ345, USB 2.0, Connectivity]]
    Quelqu'un voit il comment faire?

    Merci d'avance, et bonne fin de journée à tous!

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut Re: [Débutant] Caster un Object en String[][]
    Salut,

    Citation Envoyé par ArseNic
    J'obtiens alors bien un objet ressemblant à un String[][] puisqu'en faisant un affichage de cet Object à l'aide de la méthode toString() j'obtiens cet affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[24ZSB678, 100,00, Price], [34567FGH, 32 A, MaxCurrent], [5678900G, 220 V, MaxTension], [7FGHZ345, USB 2.0, Connectivity]]
    Ce n'est pas parceque cela ressemble a un tableau que c'en est un...
    La méthode toString() d'un objet String[][] t'aurait affichée quelque chose dans le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[Ljava.lang.String;@480457
    Que t'affiche l'exception exactement (en général les ClassCastExceptions indiquent le vrai type de l'objet dans le message d'erreur).

    Sinon tu peux toujours utilisé desClass().getName() et getClass().isArray() pour être sûr...

    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Salut, et merci.

    Apparemment ce n'est pas un tableau mais un "org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension"

    Par contre je ne vois pas comment l'exploiter...
    Ma méthode fait appel à un Web Service que j'ai écrit et qui renvoie à priori un String[][]. J'ai bien créé les (de)serializerFactories pourtant...

    Bon en tout cas je sais maintenant que je ne récupère pas vraiment un String[][], reste à comprendre pourquoi...

  4. #4
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Google est ton ami
    Pour trouver la doc de cette classe : http://ws.apache.org/axis/java/apiDocs/org/apache/axis/encoding/ser/ArrayDeserializer.html
    et donc pouvoir savoir comment l'exploiter.
    Cependant, le ArrayListExtension me fait penser que tu peux l'exploiter comme une ArrayList. mais bon, ca n'est qu'une hypothese, à vérifier donc.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par viena
    Google est ton ami
    Pour trouver la doc de cette classe : http://ws.apache.org/axis/java/apiDocs/org/apache/axis/encoding/ser/ArrayDeserializer.html
    et donc pouvoir savoir comment l'exploiter.
    Cependant, le ArrayListExtension me fait penser que tu peux l'exploiter comme une ArrayList. mais bon, ca n'est qu'une hypothese, à vérifier donc.
    Merci du tuyau, j'avoue ne pas avoir vraiment cherché à exploiter ce que j'obtiens en retour, mais plutôt à comprendre le pourquoi du comment.

    D'après une personne qui m'a l'air très calée niveau Web Services il semblerait que les tableaux à 2 dimensions ne soient pas gérés proprement par axis, ce qui expliquerait pourquoi mon tableau à 2 dimensions que je fais voyager par Web Service se transforme finalement en ArrayListExtension
    Enfin bon, ça n'est pas dramatique, j'ai un accès aux données rien qu'en faisant un toString(), ce qui me laisse penser que j'aurais bien un accès plus performant à ces données en cherchant les méthodes de la classe ArrayListExtension.

    Merci, et bon week end.

  6. #6
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    As tu essayé de faire toArray() sur ton ArrayListExtension ?
    Ca devrait marcher, car si je comprends bien, ton ArrayList contient des String[].
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par xavlours
    As tu essayé de faire toArray() sur ton ArrayListExtension ?
    Ca devrait marcher, car si je comprends bien, ton ArrayList contient des String[].
    Salut xavlours,

    J'ai essayé en passant par toArray(), et le seul type de tableau que veut bien me renvoyer cette méthode est un tableau Object[]. Pas possible de demander du Object[][] ni même du String[] ou String[][].
    Quand j'affiche monTabObject[0] j'obtiens " [24ZSB678, 100,00, Price] " qui correspond bien à la première ligne de mon tableau. C'est un peu ennuyant de devoir récupérer mes données ainsi (en supposant qu'il n'y a pas d'autre moyen), mais en utilisant un petit StringTokenizer y aurait moyen de récupérer la notion de colonnes du tableau donc c'est pas dramatique même si c'est un peu gênant...

  8. #8
    Membre éprouvé Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Ben pourquoi un string tokenizer, tu refait un toArray sur ton monTabObject[0] avec un cast et la pas besoin du tokenizer...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par yakanet
    Ben pourquoi un string tokenizer, tu refait un toArray sur ton monTabObject[0] avec un cast et la pas besoin du tokenizer...
    Tu veux dire un truc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] tabLigne1 = (String[]) monTabObject[0].toArray();
    J'ai essayé, mais ça ne compile pas, il bronche sur l'appel à toArray().
    Je vais essayer de voir quelle est la classe des objets contenus dans mon tableau d'objets et on verra ce que ça donne

    Merci du coup de main.

  10. #10
    Membre éprouvé Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Non plus un truc comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] tabLigne1 = (String[])((ArrayListExtension) monTabObject[0]).toArray();
    Oui je sais c'est moche mais ca fonctionne.
    Mais je trouve quand meme bizard que tu récupère un ArrayListExtension tu es sure que tu ne peux pas récuperer autre chose (je dis ca mais j'y connais moyen en vebservice)???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Tableau d' Object / Tableau de String
    Par lfournial dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/09/2006, 14h33
  2. Réponses: 9
    Dernier message: 31/05/2006, 17h11
  3. [débutant mais pas trop] conversion string->entier
    Par Biosox dans le forum Débuter
    Réponses: 5
    Dernier message: 06/01/2006, 22h41
  4. [Debutant(e)]caster un Object
    Par bart64 dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2004, 16h26
  5. [Débutant] java.lang.object
    Par bonnefr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2004, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo