Bonjour,
Je souhaite faire une petite suite d'objets qui me permettrait de réaliser la chose suivante :
depuis des méthodes de la Classe Service :
Si je fais ça, j'obtiens :
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
34
35
36
37
38
39
40 class Service extends Template { public int updateUser(User userToUpdate) { return update("User.update", userToUpdate); } public int updateVoiture(Voiture voitureToUpdate) { return update("Voiture.update", voitureToUpdate); } } //aller chercher dans class Template : class Template extends mesXML { public int update(String function, Object objectToUpdate) { try { if(function.compareTo("User.update")==0) {return updateUser((User) objectToUpdate);} else if(function.compareTo("Voiture.update")==0) {return updateVoiture((Voiture) objectToUpdate);} else{System.out.println("no such method");} } catch(Exception e) { e.printStackTrace(); } return 1; } } //et donc enfin : class mesXML { public int updateUser(User userToUpdate) {} public int updateVoiture(Voiture voitureToUpdate) {} }
Exception in thread "main" java.lang.StackOverflowError et l'erreur se situe dans la classe Template lorsque je force le typage de l'objet (User) ou (Voiture) pour appeler les fonctions respectives.
Ce qui est bizarre, c'est que j'ai déjà fait code proche de ça et tout c'est bien passé.
La seule solution que j'ai trouvé et qui est stable, c'est de ne pas forcer les types pour les appels aux fonctions, puis dans chaque fonction (updateUser ou UpdateVoiture) reconstruire un objet du type souhaité (User ou Voiture) depuis le type Object.
Quelqu'un comprend et peu m'expliquer ? C'est peu être pas trop clair.
Merci
Pour la logique du truc : ma classe Service c'est mon service. elle appelle la classe Template qui elle tape dans ma source de données (ici XML). L'intérêt que je vois, c'est que je pourrais facilement changer ma couche de données et j'ai uniformisé l'appel à cette couche pour chaque entité du programme avec des fonctions de Template. Peut être que c'est pas si logique que ça après tout.
remarques Bienvenue
Partager