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.
Partager