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

Java Discussion :

Probleme de cast


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut Probleme de cast
    Bonjour,

    J'ai un probleme de cast:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.ClassCastException: Graphe.Chemin
    	at ApplicationCarte.main(ApplicationCarte.java:77)
    Un Itinéraire est une classe irritant de chemin. Elle contient en plus les attributs ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Itineraire extends Chemin{
     
    	protected float consoTotale;
    	protected float tempsTotal;
    	protected float peageTotal;
    ....
    voici la classe chemin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Chemin{
     
    protected Noeud pointdepart, pointarrivee;
    protected ArrayList<Arc> chemin= new ArrayList<Arc>();
    ...
    Maintenant dans mon main je veux effectuer ceci et c'est la que ca bloque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Itineraire c= new Itineraire();
    c=(Itineraire)(graf.plusCourtChemin(villeDep,villeAr))
    la méthode plusCourtchemin de la classe Graphe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Chemin plusCourtChemin(Noeud noeud_depart, Noeud noeud_arrivee){
    		Chemin c= new Chemin();
    		c=Dijkstra.getChemin(this,noeud_depart, noeud_arrivee);
     
    return c;
    	}
    Donc si vous avez une idée pourquoi ca ne fonctionne pas. Je ne suis pas sur que ce soit la meilleur solution(deja parce que ca marche pas et ca ne m a pas l air trs propre) mais je ne vois pas comment faire autrement.

    ps:Si vous voulez plus de code dites le ...

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par G4uthier Voir le message
    Bonjour,

    J'ai un probleme de cast:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.ClassCastException: Graphe.Chemin
    	at ApplicationCarte.main(ApplicationCarte.java:77)
    Un Itinéraire est une classe irritant de chemin.

    Maintenant dans mon main je veux effectuer ceci et c'est la que ca bloque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Itineraire c= new Itineraire();
    c=(Itineraire)(graf.plusCourtChemin(villeDep,villeAr))
    plusCourtChemin te renvoie une instance de Graphe.Chemin (cf message d'erreur), et non pas un instance d'Itineraire. Si tu t'attends à recevoir un Itineraire, alors il faut revoir ta méthode plusCourtChemin pour qu'elle renvoie ca.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Par défaut
    elle renvoit un chemin dans lequel se trouve des "arc". Dans Itinéraire j ai des arc heritant de la classe arc que je nomme arcCarte. Je dois quand meme recrerer une methode me renvoyant un itinéraire? parce que les arc de mon chemin sont des arcs aussi nan?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on ne peux pas transformer au vol un classe en une autre. Le cast permet seulement de dire au compilateur "ok, la méthode déclare renvoyer un Chemin, mais je sais qu'en réalité c'est sa sous-classe itinéraire qui est renvoyée, je sais ce que je fait". En pratique dans ton cas, et au vu de ton message d'erreur, le type réelle renvoyé par la méthode n'est pas un Itineraire, d'ou le message d'erreur qui te dit que c'est juste un Chemin.

    Donc dans ton cas, soit tu te contente du chemin, soit tu modifie ton algoritme pour qu'il crée des Itinerire et pas des Chemins là ou tu a besoin d'Itineraire.

Discussions similaires

  1. Probleme de cast de string en int
    Par Oberown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2006, 11h48
  2. Réponses: 12
    Dernier message: 25/07/2005, 14h49
  3. [VB.NET][dataset][datagrid] probleme de Cast
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2005, 14h18
  4. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 08h43
  5. probleme de cast
    Par gaut dans le forum C++
    Réponses: 9
    Dernier message: 06/08/2004, 18h43

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