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

avec Java Discussion :

Int qui devient Object


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut Int qui devient Object
    Bonjour,

    Dans mon traitement, je produis un tableau de Int, et il n'est pas possible de connaître la taille de mon tableau à l'avance. Donc j'emploie la classe Vector dans lequel je range mes entiers. Tout se passe très bien jusqu'au moment (à la fin quand je connais la taille) où je veux copier le contenu de ce Vector dans un Array de Int. Que ce soit par copie directe ou en employant les méthodes toArray ou copyTo de la classe Vector, j'obtiens des Objects qui ne peuvent s'insérer dans un tableau de Int. Message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i]=monVector.get(i);
    "Type mismatch:cannot convert from Object to Int"
    Comment retransformer mes Int, qui sont devenus des Objects, de nouveau en Int.
    Ce doit être simple, mais je ne connais pas et je n'ai pas trouvé.

    Gabier

  2. #2
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i]=(Int)monVector.get(i);

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Question préliminaire, quelle version de Java utilises-tu? Inférieure ou supérieure à Java 5?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut
    Citation Envoyé par jojodu31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i]=(Int)monVector.get(i);
    Non, il refuse de convertir ("Cannot cast from Object to Int")

    gabier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    Question préliminaire, quelle version de Java utilises-tu? Inférieure ou supérieure à Java 5?
    JRE1.6, si c'est ça que tu demandes. Sinon, où voit-on le niveau de Java ? (J'utilise Eclipse 3.2).

    Gabier

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    essaie alors via une transformation par Integer

    Si java >= 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = (Integer) monVector.get(i);
    Si java <5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = ((Integer) monVector.get(i)).intValue();

  7. #7
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Soit dit en passant si ta version de java est au dessus de 5 il vaudrait mieux que ta liste soit typée, et si tu n'as pas besoin de synchronisation il vaut mieux utiliser une ArrayList au lieu du Vector

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Bonjour,

    essaie alors via une transformation par Integer

    Si java >= 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = (Integer) monVector.get(i);
    Si java <5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = ((Integer) monVector.get(i)).intValue();
    Merci fnobb,

    Avec "(Integer)" ça marche. Est-ce que c'est un truc général ? A savoir que on peut convertir vers les classes "wrapper" des types fondamentaux mais pas vers les types fondamentaux eux-mêmes ?

    Gbier

  9. #9
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Bonjour,

    essaie alors via une transformation par Integer

    Si java >= 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = (Integer) monVector.get(i);
    Si java <5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = ((Integer) monVector.get(i)).intValue();
    Comme remika je pense qu'il serait préférable d'utiliser les fonctionnalités apparau avec Java 5 notamment le fait de pouvoir paramétrer les listes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //déclaration de la liste paramétrée
    //dans cette liste on ne pourra mettre que des entiers
    List<Integer> maListe = new ArrayList<Integer>();
    //Il est préférable de remplacer les Vector par des ArrayList qui s'utilise de la même façon
     
    ...
    //ajout des éléments dans ta liste
     
    //affectation des éléments de la liste au tableau d'int
    monArray[i] = maListe.get(i);
    Ainsi plus besoin de cast.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut
    Citation Envoyé par remika Voir le message
    Soit dit en passant si ta version de java est au dessus de 5 il vaudrait mieux que ta liste soit typée, et si tu n'as pas besoin de synchronisation il vaut mieux utiliser une ArrayList au lieu du Vector
    Oui, ArrayList ça marche aussi. Super!

    Typer la liste, que veux tu dire par là ? Créer une classe qui contient mon int pour avoir un type spécfique ?

    Gabier

  11. #11
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    On peut convertir

    types fondamentaux vers Wrappers
    Wrappers vers types fondamentaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int i = new Integer(0);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArray[i] = (Integer) monVector.get(i);
    Mais pas d'un type générique comme Object vers un type fondamental comme int

    Si monVector (mais comme la dit remika monArrayList serai mieux)est construit sans définir le type de donnée il est formé d'Objet
    => get(i) renvoie un Objet

    Idéalement il faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int[] monArray = new int[1];
     
    java.util.List<Integer> maListe = new java.util.ArrayList<Integer>();
    maListe.add(5);
    monArray[0] = maListe.get(0);
    System.out.println("monArray[0]="+monArray[0]);

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut
    Merci à tous,

    C'est clair maintenant. Je ne connaissais pas ce paramétrage des listes. Mon manuel doit dater un peu.

    Gabier

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/03/2006, 11h29
  2. [AJAX] ' qui devient \'
    Par Death83 dans le forum Général JavaScript
    Réponses: 25
    Dernier message: 09/03/2006, 18h44
  3. [VB.NET] une chaine de caractère qui devient une propriete
    Par lucie.houel dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/09/2005, 14h10
  4. Réponses: 5
    Dernier message: 16/12/2004, 22h31

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