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 :

Cast en une classe abstraite


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Cast en une classe abstraite
    Bonjour,

    J'ai une classe EtatD qui étend une classe abstraite Etat et dans cette classe état, j'ai une méthode abstraite Set<Etat> succ() que je dois définir.
    Le problème, c'est que le compilateur refuse le cast.
    Comment procéder?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class EtatD extends Etat{
    	HashMap<Character, EtatD> transitions;
     
    	// d'autres méthodes ....
     
    	Set<Etat> succ(){
    		return transitions.values(); /* Type mismatch: cannot convert from Collection<EtatD> to Set<Etat> */
    	}
    }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    Par défaut
    Alors il y a deux choses, mais la première, la plus importante :

    transitions.values() n'est pas un Set. Tu ne peux pas renvoyer ça comme si c'était un Set, ce n'en est pas un. Un Set est une Collection qui ne contient jamais plus d'une fois le même élément.
    Or, une Map a parfaitement le droit de contenir plusieurs fois la même valeur. Donc Map.values() peut très bien contenir plusieurs fois le même élément, et n'est donc pas un Set. Il est normal que ça ne puisse pas être renvoyé là où un Set est demandé, ce serait contradictoire.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Ah d'accord merci, ça marche quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return new HashSet<Etat>(transitions.values());
    Ce n'était donc pas le problème de la classe abstraite.

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

Discussions similaires

  1. "Instancier" une classe abstraite
    Par alex6891 dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2006, 10h56
  2. Réponses: 8
    Dernier message: 22/03/2006, 18h24
  3. [Débutant]Passer une classe abstraite en paramètre
    Par Invité dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2006, 17h56
  4. Réponses: 2
    Dernier message: 27/03/2005, 16h09
  5. [Debutant] Une classe abstraite en parametre ?
    Par kiroukou dans le forum Débuter
    Réponses: 8
    Dernier message: 03/02/2005, 15h05

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