Bonjour
Je dois mettre en "LinkedList" des instances d'objets de classes différentes. Ces classes implémentent toutes la même méthode, et je veux, une fois que je dépile mes objets, appeler cette méthode sur chacun pour réaliser une opération. Pour simplifier, je donne un exemple avec deux classes qui font l'addition et la soustraction de deux nombres : la réalité est évidemment bien plus complexe.
J'ai utilisé une Interface, que je déclare dans chaque classe, et je fais un "cast" de mes objets dépilés sur cet interface. Cela me génère une erreur. Pas d'erreur signalée à la compilation. Plantage sur l'appel d "effectuer" à l'exécution. Quelqu'un peut il m'expliquer pourquoi, et ce qu'il faudrait que je modifie pour pouvoir appeler cette méthode "effectuer" ? Désolé pour l'indentation qui ne passe pas sur le forum, je ne sais pas comment faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public interface Operation {int effectuer (int a, int b) ;} public class Addition implements Operation { int effectuer (int a, int b){return (a+b) ;} } public class Soustraction implements Operation { int effectuer (int a, int b){return (a-b) ; } }
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 import java.util.* ; public class Essai { public static void main (String[]args){ // initialisation d'une série de calculs LinkedList calcul = new LinkedList () ; calcul.add (new Addition()); calcul.add (new Soustraction()); // Excution de la série de calculs Iterator i = calcul.iterator() ; while (i.hasNext()) { Operation o = (Operation)i.next(); int r = o.effectuer (5, 3) ; System.out.println ("Resultat = " + r); } } }
Partager