Bonjour
je rencontre un problème de manipulation de mes classes héritées, voici mon code:
Dans l'application, je manipule une variable du type "ClasseDeBase" qui "contient" une instance de "ClasseDerivee1" ou "ClasseDerivee2", comme ceci:
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 public class ClasseDeBase { } public class ClasseDerivee1:ClasseDeBase { } public class ClasseDerivee2:ClasseDeBase { } public classe AutreClasse { public void fonctionlambda(ClasseDerivee1 uneInstance) { } public void autrefonction(ClasseDerivee2 uneInstance) { } }
A l'exécution, ça plante systématiquement avec l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ClasseDeBase maVariable; AutreClasse Variable2= new AutreClasse(); ..... maVariable= new ClasseDerivee1(); .... Variable2.fonctionlambda((ClasseDerivee1) maVariable);et si je ne transtype pas, ça ne passe pas la compilation (mauvais type passé en paramètre).impossible de transtyper "ClasseDeBase" en "ClasseDerivee1"
ma variable contient pourtant une instance valide, du bon type. Existe-t-il un moyen de forcer le transtypage (sur certains langages, la validité du transtypage est laissé à l'appréciation du développeur, charge à lui de s'assurer que la conversion est valide sous peine de plantage)
J'ai essayé avec les types génériques, mais tôt ou tard, quand une nouvelle classe hérite d'un de ces types génériques, le problème revient.
Partager