[Java] Probleme de cast

Probleme de cast [Java] - Java - Programmation

Marsh Posté le 21-02-2009 à 02:18:19    

Bonjour,
 
Je suis en train de coder differents traitements d'arbres avec le design pattern Visitor...
Mais j'ai un petit problème avec les cast :
 
J'ai une classe TreeProgram :
 

Code :
  1. public class TreeProgram extends CommonTree implements Element {
  2.   public void accept(TreeVisitor v)
  3.   {
  4.     v.visit(this);
  5.   }
  6. }


 
où l'on ajoute juste a la classe CommonTree la methode accept de l'interface Element...
 
 
et lorsque je fais :
 

Code :
  1. CommonTree t = new CommonTree();
  2. TreeProgram p = (TreeProgram) t;


 
 
 
j'ai le droit à un magnifique :
 
Exception in thread "main" java.lang.ClassCastException: org.antlr.runtime.tree.CommonTree cannot be cast to lasco.util.visitor.TreeProgram
 
 
Quelqu'un aurait une explication svp ?
merci d'avance

Reply

Marsh Posté le 21-02-2009 à 02:18:19   

Reply

Marsh Posté le 21-02-2009 à 10:23:43    

T'as rien compris à java ou à ce que fait un cast en java, retournes apprendre.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 21-02-2009 à 12:40:38    

En gros, pour faire simple, le problème est le suivant :
Dans la POO, tu peux faire le genre de trucs suivant :
1 - On considère qu'un chat est un animal (chat extends animal)
2 - On créé un chat (new chat)
3 - On utilise le chat en tant qu'animal (cast de chat en animal)
4 - On peut utiliser l'animal en tant que chat car à la base c'était déjà un chat ... (cast de animal en chat)
Toi, ce que tu essaye de faire c'est :
1' - Idem que 1
2' - On créé un animal (new animal)
3' - On utilise l'animal en tant que chat (cast de animal en chat)
 
Or 3 est incorrect dans la POO (comme dans la vraie vie) car qu'est-ce qui te dit que ton animal est effectivement un chat, mais pas plutot un chien, ou un zebre ...
Sans plus de précision ton animal est un animal et rien de plus, tu ne peux pas le considérer comme quelque chose de plus 'précis' en termes de POO sauf si à la base c'était déjà un chat, or comme tu le créé en tant qu'animal (2'), ce n'est pas possible !
J'espère que cette 'image' t'aura aidée, mais sinon, comme le dit Masklinn tu devrais sérieusement réviser tes BASES de POO et/ou de Java ...


---------------
By bob.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed