Bonjour,
J'ai une méthode qui est reprise dans plusieurs classes, la seule chose qui change c'est le type des paramètre. Je voudrait la généraliser mais je me heurte à quelques difficultés. Je ne sais pas si je m'y prends bien.
Contenu de la méthode non généralisé :
Voila la généralisation que j'ai essayé de faire :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public void synchronizeAffectation(Affectation iAffectation, Affectation rAffectation, List<Mouvement> mouvements, boolean simuler) { if( _log.isDebugEnabled() ) _log.debug("synchronizeAffectation(affectation=" + iAffectation + ")"); HiDatabase db = HiReferentiel.get(); long cc = db.transactionRequired(); try { /* Si affectation dans le référentiel non existant : insertion. */ if( rAffectation == null ) { if( _log.isInfoEnabled()) _log.info("INSERT " + iAffectation); // Inserer le nouvel object if( ! simuler ) db.getSession().persist(iAffectation); else // FIXME Impossible puisque rAffectation est null //iAffectation.setTechid( rAffectation.getTechid() ); mouvements.add(new MouvementInsert(iAffectation)); } catch (RuntimeException e) { db.setRollbackOnly(); throw e; } finally { db.transactionEnd(cc); } }
Le problème est que ma méthode MouvementInsert me présente l'erreur suivante :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public abstract class Service<T extends TechIdentifiable> { private static final Logger _log = Logger.getLogger(Service.class); public void synchronize (Class <T> iObject,Class <T> rObject, List<Mouvement> mouvements, boolean simuler ) { if( _log.isDebugEnabled() ) _log.debug("synchronizeAffectationHisto(affectationHisto=" + iObject + ")"); HiDatabase db = HiReferentiel.get(); long cc = db.transactionRequired(); try { /* Si affectation dans le référentiel non existant : insertion. */ if( rObject == null ) { if( _log.isInfoEnabled()) _log.info("INSERT " + iObject); // Inserer le nouvel object if( ! simuler ) db.getSession().persist(iObject); else // FIXME Peut pas marcher : rAffectationHisto est null //iAffectationHisto.setTechid( rAffectationHisto.getTechid()); mouvements.add(new MouvementInsert(iObject)); } catch (RuntimeException e) { db.setRollbackOnly(); throw e; } finally { db.transactionEnd(cc); } }.The constructor MouvementInsert(Class<T>) is undefined
Et il m'est également impossible d'accéder aux méthodes de ma classe <T> (ce qui me parait normal) mais plutot génant dans mon codage....
Pouvez-vous m'éclairer sur la marche à suivre, une solution autre est-elle préférable ? Merci.
Partager