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 :

Problème de cast


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 43
    Par défaut Problème de cast
    Bonjour,
    voila je ne suis pas une fèche en java et je commence à m'énerver sur un problème de cast ( ou peut être que je n'utilise pas la bonne méthode ).

    Alors voila j'ai un objet A qui contient une collection d'objet B et/ou B1 et/ou B2 (B1 et B2 héritant de B) Ce que je sui en train de faire c'est une méthode pour cloner certain élément de B. J'ai bien implémenter la méthode clone de mes classes B, B1, B2.

    A -> Gabarit
    B -> GabaritElement
    B1 -> GabaritNote
    B2 -> GabaritCumul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public void cloneGabaritVague(Gabarit gabarit, Vague source, Vague cible) {
     
    	// collection chargée par hibernate
    	Set<GabaritElement> ges = gabarit.getElementsByVague(source);
    	for (GabaritElement element : ges) {
    		log.debug( "Object : " + element + " | " + element.getClass().getName() );
    		// on clone l'objet - et c'est la que ca plante 
                    // model.GabaritElement cannot be cast to model.GabaritNote
    		GabaritElement ge = (GabaritElement) element.clone();
    		// on modifie l'objet cloné
    		ge.setVague(cible);
    		// on sauvegarde avec Hibernate
    		gabaritElementManager.save( ge );
    	}
    }

    l'erreur compléte :

    -------------------------------------------------------------------------------
    Test set: service.GlobalManagerTest
    -------------------------------------------------------------------------------
    Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 12.141 sec <<< FAILURE!
    testCloneGabaritVague(service.GlobalManagerTest) Time elapsed: 0.484 sec <<< ERROR!
    java.lang.ClassCastException: model.GabaritElement cannot be cast to model.GabaritNote
    at model.GabaritNote.clone(GabaritNote.java:51)
    at service.impl.GlobalManagerImpl.cloneGabaritVague(GlobalManagerImpl.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy38.cloneGabaritVague(Unknown Source)
    at service.GlobalManagerTest.testCloneGabaritVague(GlobalManagerTest.java:119)



    Un peu d'aide ne serait pas de refus. ca commence vraiment àme prendre le chou et biensur je suis déjà à la bourre.

    Merci d'avance, Julien.

  2. #2
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Peux-t-on voir la méthode clone dans GabaritNote.java, surtout vers la ligne 51

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 43
    Par défaut
    Effectivement je ne suis même pas allé voir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public Object clone(){
     
    	GabaritNote gabaritNote = (GabaritNote) super.clone(); // <-- ligne 51
    	gabaritNote.setGroupeNote(groupeNote);
     
    	return gabaritNote;
     
    }

  4. #4
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    D'après l'erreur capturée, la méthode super.clone() retourne un objet GabaritElement, alors que tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GabaritNote gabaritNote = (GabaritNote) super.clone();
    Tu peux te débrouiller tout seul maintenant?

  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,


    Ce que je ne comprend pas c'est que tu manipules des GabaritElement et tu te retrouves dans des GabaritNote...

    Il y a une relation entre ces deux classes ???

    a++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 43
    Par défaut
    Citation Envoyé par billynirvana Voir le message
    D'après l'erreur capturée, la méthode super.clone() retourne un objet GabaritElement, alors que tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GabaritNote gabaritNote = (GabaritNote) super.clone();
    Tu peux te débrouiller tout seul maintenant?
    j'aimerais mais je ne vois pas bien comment faire. est-ce que je peux me sservir de la méthode clone de la classe mère. ou faut il que je réimplémente tout.


    Citation Envoyé par adiGuba Voir le message
    Salut,

    Ce que je ne comprend pas c'est que tu manipules des GabaritElement et tu te retrouves dans des GabaritNote...

    Il y a une relation entre ces deux classes ???
    a++
    ui GabaritNote est une sous classe de GabaritElement.

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

Discussions similaires

  1. [CASTS]problème de cast de Time
    Par DeVoN dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2006, 17h24
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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