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 :

Object vers List<Object>


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut Object vers List<Object>
    Bonjour,
    J'ai une méthode qui me retourne un type (Object). Mais je veux caster cet Object à List<Object>. Voici le code que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Object> response = null;
    Object reponse = (Object) client.execute("Ppp.nomMethode", params);
    response = (List<Object>) reponse;
    le message d'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.ClassCastException: [Ljava.lang.Object;
    	at MaClasse.main(MaClasse.java:111)
    P.S : je travaille avec un client XMLRPC.

    Y-a-t-il un moyen de faire un cast Object vers List<Object>?

    Merci.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si tu as une ClassCastException, cela signifie que ce n'est pas une List<Object>... et d'après le message d'erreur on dirait que c'est plutôt un tableau d'Object...


    a++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    J'ai essayé de mettre mon retour Object dans un ArrayList. Mais après je sais pas comment je peux l'intégrer dans un List<Object>.
    En fait, mon traitement après la récupération de Object se fait sur List<Object>, c'est pour ça j'essaie de faire ce cast.
    Mon but est de chercher un moyen que me fais la transformation : Object -> List <Object>.

    Voici ce que j'ai pu ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Object reponse = (Object) client.execute("Ppp.getListCard", params);
    ArrayList<Object> myArr = new ArrayList<Object>();
    myArr.add(reponse);
    Et j'ai resté coincé à ce stade là.

    Merci.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lahmar.abdel1 Voir le message
    Et j'ai resté coincé à ce stade là.
    Pourquoi ?


    a++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Le traitement que je doive le faire après la récupération de Object est :
    : représente une entête qui a un traitement spécial.
    Si donc un traitement supplémentaire à faire.
    Ci dessous le traitement à faire si j'ai bien in List<Object> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    if (response!=null) {
    //First element is always there, this is the header in a Map
     
    Map header = (Map)response.get(0); 
    System.out.println("header = "+ header);
    System.out.println("elt1Header = "+ header.get("RequestResponse"));
    System.out.println("elt2Header = "+ header.get("ResponseWording"));
     
    //Test is there are cards in the response
    if(response.size()>1) {
     
    Object [] cards = (Object []) response.get(1);
    	for (int i=0; i<cards.length;i++) {
    	HashMap currentCard = (HashMap)cards[i];
    	System.out.println("Card response #"+i);
    	//Here, all fields defined in the card structure are accessible
    	System.out.println(" RandomNum="+currentCard.get("RandomNum"));
    	System.out.println(" CardResponse="+currentCard.get("CardResponse"));
    System.out.println(" CardResponseWording="+currentCard.get("CardResponseWording"));
    System.out.println(" CardBalance="+currentCard.get("CardBalance"));
    					}
    				}
    			}
    Avec ce code, j'ai eu une autre erreur de cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.ClassCastException: [Ljava.lang.Object;
    	at MaClasse.main(MaClasse.java:132)
    au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map header = (Map)response.get(0);
    Y at-il un autre moyen de faire ce cast autre que de passer par un ArrayList<Object>.

    Merci.

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ben tu ne fais que déporter le problème...

    Apparemment tu as un tableau d'Object, donc tu ne peux le caster que vers un tableau d'Object. Ca n'a aucun sens de caster cela vers une List ou une Map...


    Que contient exactement l'objet retourné par la méthode execute() ???

    a++

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Ben tu ne fais que déporter le problème...
    Que contient exactement l'objet retourné par la méthode execute() ???
    voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object org.apache.xmlrpc.client.XmlRpcClient.execute(String pMethodName, List pParams) throws XmlRpcException
    Merci.

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    ...

    Oui mais c'est quoi exactement comme objet ? Tu ne peux pas l'utiliser si tu ne sait pas ce que c'est !

    a++

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    il s'agit d'une réponse à une requête sous la forme suivante :
    *) une entête composé de 4 champs : il s'agit de 1er élément de la réponse.
    *) un tableau de cartes (de type object chacune avec des champs spécifiques), si la taille de la réponse > 1.

    C'est pou ça j'essaie de faire ce cast à la réponse pour que je puisse accéder à chaque partie de la réponse à la requête.
    Je sais pas si techniquement est possible ou non car je suis de côté client et le serveur qui me fournie cette réponse donc j'ai plus de contrôle sur le format reçu.
    J'espère que tu m'as bien compris.

    Merci encore.

  10. #10
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Donc si c'est un tableau il faut caster en tableau et non pas en List ou en Map...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] reponse = (Object[]) client.execute("Ppp.getListCard", params);
    a++

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Super joli coup adiGuba

    Merci beaucoup.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/09/2014, 22h23
  2. Peut faire un Dispose d'une List(Of object) ?
    Par MadLion dans le forum VB.NET
    Réponses: 6
    Dernier message: 19/11/2007, 11h15
  3. [C#] Conversion implicite de type object vers int
    Par alexking2005 dans le forum C#
    Réponses: 5
    Dernier message: 02/01/2007, 10h02
  4. List ordre object
    Par drKzs dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 14/09/2006, 17h43
  5. caster une List<Object> en List<..>
    Par K-Kaï dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 17h43

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