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

Collection et Stream Java Discussion :

Convertion d'un tableau Object en tableau d'une classe spécifique


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut Convertion d'un tableau Object en tableau d'une classe spécifique
    Bonsoir
    J'ai esseyé de convertir un array d'Object en Array de Voiture à l'aide du cast mais ça n'a pas marché, est ce impossible de faire le cast?

    Voilà le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Voiture> listeVoiture = new ArrayList<Voiture>();
    //L'ajout des voitures dans la liste
    Voiture[] tab = (Voiture[]) listeVoiture.toArray();
    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Points : 480
    Points
    480
    Par défaut
    Bonsoir,

    Il n'est pas possible de faire le cast de cette façon, en effet, le tableau retourné par la méthode toArray(), est un tableau d'Object, même s'il contient des 'Voiture'.

    Dans la pratique, il existe une méthode toArray(T[] a) qui fait ce que tu souhaites, elle prend en paramètre un tableau du type d'élément voulu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Voiture[] tab = list.toArray(new Voiture[0]);
    a+

  3. #3
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    Merci pour votre réponse,
    Si j'avais déjà trouvé cette dernière méthode, et d'ailleurs c'est avec quelle je travail, c'est juste que le truc du cast qui m'a derangé , car le cast est logique , mais il marche pas ...
    donc aucune idée du pourquoi le cast ne marche pas?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben non, ce serait pas logique que ça marche.

    L'objet est un Object[]. Je t'accorde que c'est un Object[] rempli d'objets Voiture, mais c'est un Object[].
    Toi tu arrives et tu fais un cast pour dire "Hé, je suis sûr que cet Object[], en fait c'est un Voiture[], alors à partir de là je veux le traiter comme un Voiture[]."
    Or, ce n'est pas un Voiture[], c'est un Object[]. Le cast échoue.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    mais avec d'autres type par exemple ça passe,
    si on a par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object v = new Voiture();
    juste apres je fais (Voiture)o , et là le compilateur considère l'objet comme une voiture non?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Mais là l'objet est une Voiture.
    Il a été affecté à une variable de type Object, ce qui est valable puisque Voiture est une sous-classe de Object. Mais l'objet est une Voiture, et donc si tu castes pour dire "je suis sûr que cet objet est en fait une Voiture, alors mets-moi ça dans une variable de type Voiture", le programme va constater que oui, en effet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    Ah voilà, j'y vois plus clair, merci pour vos précisions,
    donc pour résumé le cast ne permet pas de changer le type de l'objet;
    et ce le même cas pour les types primitifs ? car là je pense qu'il y'a un changement;
    Sinon merci pour vos explications

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En effet, le cast (et beaucoup d'autres choses) est une notion différente avec les types primitifs d'avec les types objets.

    Du coup c'est un peu moins simple de se fixer les idées. En contrepartie, c'est un confort d'écriture et de performance.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    Merci

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

Discussions similaires

  1. [Débutant] Additionner float dans tableau object
    Par Orci76 dans le forum C#
    Réponses: 0
    Dernier message: 03/06/2013, 08h33
  2. Réponses: 4
    Dernier message: 23/02/2012, 14h21
  3. Réponses: 1
    Dernier message: 16/12/2011, 15h52
  4. convertir object en tableau de byte et inversement
    Par wolfazer dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/11/2008, 10h39
  5. Appel un object dans Tableau d'objects
    Par aristeas dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/11/2008, 22h07

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