Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2706 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  {Heritage} Je comprends pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

{Heritage} Je comprends pas...

n°574802
spitagor
Posté le 24-11-2003 à 16:49:17  profilanswer
 

Voila j'ai fait un truc qui me semmble tout con mais le compilateur veut rien savoir
 
Mon but est de faire un objet FileNode qui etend File et dont la methode tosstring renvoie le nom du fichier et non pas son chemin complet comme le fait la methode tostring de File.
 
j'ai defini cette classe qui herite de File donc rien d'extraordinaire :
 

Code :
  1. import java.io.*;
  2.     public class FileNode extends File
  3.    {
  4.        public FileNode(String pathname)
  5.       {
  6.          super(pathname);
  7.       }
  8.  
  9.        public String toString()
  10.       {
  11.          return this.getName();
  12.       }
  13.    }


 
Ensuite je veux l'utiliser :

Code :
  1. public FileNode[] roots;


 

Code :
  1. roots = (FileNode[])File.listRoots();


 
et la il me met une ClassCastException
 
Comment pallier ce probleme? est ce que ca vient du fait que listRoots est static ? on ne pourrait donc l'appliquer que sur File ?
 
Merci de votre aide :)
 
Edit : pardon pour les crochets  :)


Message édité par spitagor le 24-11-2003 à 17:21:12
mood
Publicité
Posté le 24-11-2003 à 16:49:17  profilanswer
 

n°574858
El_gringo
Posté le 24-11-2003 à 17:07:23  profilanswer
 

Ben, listRoots te rend un tableau de File, pas un tableau de FileNode. Et puis, j'pense pas que tu puisses caster tous les élements d'un tableau comme une grosse brute, comme ça. Faudrait au moins énumérer les élements du tableau, et les caster un par un. Bref, de toute façon, tu peux pas caster un File en FileNode. Le contraire, oui. Par contre tu peux te faire une méthode de convertion par exemple, qui te rend un FileNode à partir d'un FileNode, ou alors créer une classe FileNodeFactory, chargée de construire des instances de FileNode, à partie d'instances de File.


---------------
Les Vers Solitaires, on aime ... ou pas !
n°574865
spitagor
Posté le 24-11-2003 à 17:14:54  profilanswer
 

mouais.... c'est bien chiant tout ca...
c pourtant un truc tout con que je veux faire ! juste redefinir une methode!
 
 
Tant qu'a faire autant encapsuler un fichier ce serait plus simple? Et je redefinis les methodes dont j'ai besoin...
 
Style :  
 

Code :
  1. public class FileNode
  2.    {
  3.       private File fichier;
  4.  
  5.        public String toString()
  6.       {
  7.          return this.fichier.getName();
  8.       }
  9.  
  10.        public File getFichier()
  11.       {
  12.          return this.fichier;
  13.       }
  14.      
  15.        public File[] listFiles()
  16.       {
  17.          return this.fichier.listFiles();
  18.       }
  19.        public boolean isDirectory()
  20.       {
  21.          return this.fichier.isDirectory();
  22.       }
  23.  
  24.  
  25.    }


 
trop bourrin?  :??:

n°574871
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-11-2003 à 17:16:41  profilanswer
 

les [ ] dans les titres c'est pas bien [:benou] (ça cache le nom de la sous-catégorie)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°574886
benou
Posté le 24-11-2003 à 17:26:48  profilanswer
 

spitagor a écrit :

mouais.... c'est bien chiant tout ca...
c pourtant un truc tout con que je veux faire ! juste redefinir une methode!


ouais mais le problème c'est que t'as pas saisi le principe de l'héritage en java je pense ...
 
et non, ta 2e méthode n'est pas trop bourrin mais elle ne règle pas le problème : c'est toujours un tableau de File que tu tetourne et pas un tableau de FileNode


---------------
ma vie, mon oeuvre - HomePlayer
n°574895
spitagor
Posté le 24-11-2003 à 17:40:03  profilanswer
 

en fait c juste que j'ai voulu faire de la compatibilité ascendante.... bon je vais faire une fonction de conversion alors... t vraiment sur qu'il n'y a pas d'autre moyen? Je trouve ca un peu lourd au vu de ce que je veux faire mais bon...

n°574898
benou
Posté le 24-11-2003 à 17:43:34  profilanswer
 

pkoi tu ferais pas une NodeFile qui hérite de File et qui surcharge les méthodes list() pour retourner des tableaux de NodeFile plutot que de File ?


Message édité par benou le 24-11-2003 à 17:44:30

---------------
ma vie, mon oeuvre - HomePlayer
n°574905
spitagor
Posté le 24-11-2003 à 17:47:36  profilanswer
 

ben oui c mon but effectivement ..

n°574921
spitagor
Posté le 24-11-2003 à 17:54:04  profilanswer
 

mais ca ne ferait pas que deplacer le probleme?  
 
 

Code :
  1. public FileNode[] listFiles()
  2.       {
  3.          return ???;
  4.       }


 
 
tu parlais de quelle methode list? celle sui renvoie une String? ou listFiles?

n°574954
benou
Posté le 24-11-2003 à 18:12:03  profilanswer
 

spitagor a écrit :

mais ca ne ferait pas que deplacer le probleme?  


oui, le code sera le même mais il sera fait à l'intérieur de FileNode, ce qui est bien plus logique puisque c'est sa fonction.
 

spitagor a écrit :

tu parlais de quelle methode list? celle sui renvoie une String? ou listFiles?


si j'ai bien compris, ton FileNode redéfinit la méthode toString(), donc à mon avis il faudra que tu redéfinisses les 2 types de méthode


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 24-11-2003 à 18:12:03  profilanswer
 

n°574969
spitagor
Posté le 24-11-2003 à 18:28:12  profilanswer
 

ok...
 
et sinon pour la fonction de conversion
 
je dois convertir un File en FileNode
 

Code :
  1. public FileNode toFileNode()
  2. return ??? j'ai trop du mal la...comment je fais pour convertir un File en FileNode... ce qui differe c'est juste une methode!

n°574973
benou
Posté le 24-11-2003 à 18:31:54  profilanswer
 

:/
 
ben FileNode c'est ta classe, tu devrais le savoir ! [:w3c compliant]
 
d'après le code quetu as filé plus haut, ce serait new FileNode(leFile.toString()).


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  {Heritage} Je comprends pas...

 

Sujets relatifs
[Java] interface: heritage de methodes statiques[PROLOG] Je comprends pas cette logique....
[XFree] XError , je ne comprends pas a quoi ca correspond[SDL] je comprends pas bien une fonction...
Je comprends pas pkoi j'ai cette erreur sur ma vue sous Oracle[CSS] Heritage ou un truc dans le genre... :D
Héritage cyclique.[sessions] hu ? |Oo| comprends po là
[C++] je debute. classe amie. classe abstraite, heritage.[résolu]variable dynamique, comprends pas
Plus de sujets relatifs à : {Heritage} Je comprends pas...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)