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 :

Ajout élément dans une collection générique


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Par défaut Ajout élément dans une collection générique
    Bonjour,

    Je cherche à ajouter des éléments dans un Set. Mes éléments sont des strings et j'ai un accesseur sur la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String element = "test";
    Set<?> stops = analyzer.getStopwordSet();
    J'ai du mal à voir comment je peux ajouter element dans mon Set...

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Par défaut
    De ce que je lis, il s'agit d'un set d'objets Objects, donc ne devrait pas poser de problème... ?

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Si car le Set est "taggé" comme dépendant d'aucun type explicite (token '?'). Le compilateur refuse donc de "passer" un type String qui ne sera pas nécessairement compatible.

    Le mieux si le Set n'est pas génériquement typé, c'est de ne pas spécifier le type générique. Exemple : Set set = ...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Par défaut
    En fait, l'accesseur retourne des Set<?>. Si j'essaie de mettre élément j'ai quelquechose de ce genre là : The method add(capture#3-of ?) in the type Set<capture#3-of ?> is not applicable for the arguments (String)

  5. #5
    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,


    Le type Set<?> signifie que le type d'élément est inconnu. Donc tu ne peux pas y rajouter des éléments !

    Il faudrait modifier l'accesseur afin de renvoyer le type correct.


    a++

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Retourner un Set<?>, c'est vraiment histoire de rendre hyper pénible toute manipulation ...

    Tu n'as guère d'autre choix que de caster vers un Set d'objets (ou de String si tu es sûr qu'il n'y a bien que des String) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set<?> setOrigine = maMéthodeHorrible();
    Set<Object> setUtilisable = (Set<Object>) setOrigine;
    // et tu peux utiliser ton set
    Edit par rapport à AdiGuba : effectivement, s'il a la main sur la méthode appelée, la changer pour avoir en sortie le bon type serait le plus idoine !

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Par défaut
    Merci pour vos réponses

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

Discussions similaires

  1. ajout d'un nouvel élément dans une collection
    Par sasuma dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2008, 18h15
  2. Ajout éléments dans une zone de liste
    Par tabtab dans le forum IHM
    Réponses: 15
    Dernier message: 01/10/2007, 08h39
  3. Réponses: 2
    Dernier message: 20/04/2007, 01h09
  4. Recheche d'un élément dans une collection
    Par pegase06 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/01/2007, 15h30
  5. ajout éléments dans une balise select
    Par wehtam dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h03

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