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 :

Pb avec vector<? extends Object>


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut Pb avec vector<? extends Object>
    Bonjour,

    Le bout de code que voici ne compile pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int row;
    Object value;
     
    Vector<? extends Object> v;
    v.set(row, value);
    et la je ne sais pas pourquoi.

    Mon souci c'est que je ne connais pas le type qui sera dans le vector, juste qu'il hérite de Object.

  2. #2
    Membre éprouvé
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Par défaut
    Citation Envoyé par beuhnoix Voir le message
    Bonjour,

    int row;
    Object value;

    Vector<? extends Object> v;
    v.set(row, value);

    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Vector<Object> v;
    v.set(5,value); //ca ne marche que si tu as déja un objet à la position 5 de v 
    v.add(value); /// marche tout le temps

  3. #3
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonsoir,

    Petite remarque : il est préférable d'utiliser la classe ArrayList que Vector (voir la FAQ : http://java.developpez.com/faq/java/...IONS_info_list)

    De plus il faut instancier ton objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Object> v = new Vector<Object>();

  4. #4
    Invité1
    Invité(e)
    Par défaut
    Je pense que tout est dit. Cependant, je ne vois pas l'intérêt de préciser le type si c'est pour mettre "Object" ; ne rien mettre aura le même effet !

    Mais je crois que la syntaxe List<Object> n'est plus valide en java 6... Je me trompe ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Citation Envoyé par martin.bouladour Voir le message
    Je me trompe ?
    Oh oui ! o_O

  6. #6
    Invité1
    Invité(e)
    Par défaut
    Ah bon ok

  7. #7
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par martin.bouladour Voir le message
    Mais je crois que la syntaxe List<Object> n'est plus valide en java 6... Je me trompe ?
    Ou plutot est possible depuis java 5

  8. #8
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    Merci de vos réponses mais cela ne résout pas mon problème. J'ai typé les object Vector pour ne pas avoir le warning lors de la compilation et puis à la base ca me semble plus propre.

    La déclaration Vector<? extends Object> me permet de lui assigner aussi bien un Vector<Integer> ou un Vector<Boolean>.

    Toutefois à cause de l'interface utilisé (dans mon cas AbstractTableModel) je dois implémenter setValue(Object value,int row, int col)

    et donc je fais v.set(row,value) mais ca ne compile pas car il me dit que set(int, ? extends of Object) n'est pas applicable à set(int, object)

    La seule solution que je vois c'est d'enlever le typage de mes vector.
    Au dela j'aimerais comprendre pourquoi je ne peux pas mettre un object dans un Vector<? extends Object>

  9. #9
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par défaut
    ceci resumera le shmilblik

    List<? extends Object> list = new ArrayList<Object>(); <-- compile
    list.add(new Object()); <--- ne compile pas
    list.add(new String()); <-- ne compile pas

    Object toto = list.get(0); compile

    on peut faire du get mais pas du add c bien pratique

  10. #10
    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
    Salut,

    Citation Envoyé par beuhnoix Voir le message
    on peut faire du get mais pas du add c bien pratique
    C'est le but justement !

    List<? extends Object> signifie que tu as une List contenant des objets héritant de Object. Donc ta liste pourrait être List<Number> ou List<String> ou autres...


    • Tu peux visualiser les éléments de la liste (puisque tu sais que ce sont forcément des objets).
    • Mais tu ne peux pas ajouter des éléments dans la liste, puisque tu ne connais pas le type exact des objets de la liste.


    A l'inverse tu as List<? super Object> qui permet exactement l'inverse...



    Dans ton cas tu veux une liste qui puisse contenir n'importe quel objet, et donc comme cela a été dit tu dois utiliser List<Object>...


    a++

Discussions similaires

  1. probleme avec vector d'object
    Par johncrom dans le forum C++
    Réponses: 6
    Dernier message: 20/05/2009, 12h31
  2. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00
  3. Pb avec Vector.h (introuvable)
    Par Axiome dans le forum MFC
    Réponses: 5
    Dernier message: 02/02/2006, 14h06
  4. pb avec vectors de pointeurs
    Par e-teo dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/07/2005, 14h11
  5. probleme avec vector
    Par venomelektro dans le forum SL & STL
    Réponses: 16
    Dernier message: 16/08/2004, 23h39

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