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

  FORUM HardWare.fr
  Programmation
  Java

  Faire un cast dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un cast dynamique

n°348886
Cherrytree
cn=?
Posté le 01-04-2003 à 11:19:16  profilanswer
 

Classiquement, en Java on est amené à faire :
 

Code :
  1. MyObject m = (MyObject)o;


 
Maintenant si j'ignore que o est en fait du type MyObject, comment puis-je faire le bon cast, dynamiquement ?


---------------
Le site de ma maman
mood
Publicité
Posté le 01-04-2003 à 11:19:16  profilanswer
 

n°348906
darklord
You're welcome
Posté le 01-04-2003 à 11:32:44  profilanswer
 

bin tu dois savoir au minimum avec quoi tu travailles hein :o
 
instanceof peux te permettre de trouver le type
 
if (o instanceof MyObject)  
  // ... cast to MyObject


---------------
Just because you feel good does not make you right
n°348913
krosso
j'suis à la bourre
Posté le 01-04-2003 à 11:37:49  profilanswer
 

Code :
  1. String chaine = new String("pouet" );
  2.       Object o = chaine;
  3.       System.out.println(o.getClass().getName());


 
ça renvoit java.lang.String, essaye pour voir (je ne sais pas si ça marche)?


Message édité par krosso le 01-04-2003 à 11:38:28
n°348916
Serial Cod​er
Posté le 01-04-2003 à 11:39:29  profilanswer
 

Cherrytree a écrit :

Classiquement, en Java on est amené à faire :
 

Code :
  1. MyObject m = (MyObject)o;


 
Maintenant si j'ignore que o est en fait du type MyObject, comment puis-je faire le bon cast, dynamiquement ?


Et avec DYNAMIC_CAST ?  
 
Oups, on parle de Java ici, pas de C++, sorry  :whistle:  
 
[:neowen]


---------------
Je code en série et en parallèle
n°348917
krosso
j'suis à la bourre
Posté le 01-04-2003 à 11:40:05  profilanswer
 

ça renvoit peut-être le bon type, mais je ne sais pas quoi en faire après, comment peut-on l'utiliser pour caster ?

n°348927
Cherrytree
cn=?
Posté le 01-04-2003 à 11:44:49  profilanswer
 

DarkLord a écrit :

bin tu dois savoir au minimum avec quoi tu travailles hein :o
 
instanceof peux te permettre de trouver le type
 
if (o instanceof MyObject)  
  // ... cast to MyObject


Y a pas un autre moyen ? Et avec getClass() ? Le truc c'est que getClass() retourne une classe et dans le cast, c'est une chaîne...


---------------
Le site de ma maman
n°348928
Cherrytree
cn=?
Posté le 01-04-2003 à 11:46:11  profilanswer
 

krosso a écrit :

Code :
  1. String chaine = new String("pouet" );
  2.       Object o = chaine;
  3.       System.out.println(o.getClass().getName());


 
ça renvoit java.lang.String, essaye pour voir (je ne sais pas si ça marche)?


Est-ce que qqn sait si ça marche ça ?


---------------
Le site de ma maman
n°348930
bobuse
Posté le 01-04-2003 à 11:47:49  profilanswer
 

Le mieux c'est quand meme de savoir quels sont les types d'objets que tu es censé rencontrer ... S'il y en a vraiment trop, et que tu as besoin de faire un traitement particulier, ben faut faire une généralisation :/ Mais bon après ca depend vraiment du contexte ...


---------------
get amaroK plugin
n°348931
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-04-2003 à 11:47:54  profilanswer
 

Cherrytree a écrit :


Est-ce que qqn sait si ça marche ça ?


Oui.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°348933
krosso
j'suis à la bourre
Posté le 01-04-2003 à 11:49:06  profilanswer
 


Oui, ça marche, mais pas sur que ce soit utile  :D

mood
Publicité
Posté le 01-04-2003 à 11:49:06  profilanswer
 

n°348937
bobuse
Posté le 01-04-2003 à 11:50:36  profilanswer
 

krosso a écrit :


Oui, ça marche, mais pas sur que ce soit utile  :D  


+1
 
a part pour le debug, je suis pas convaincu de l'utilite de cette fonction ...
instanceof est a mon sens beaucoup plus utilisable


---------------
get amaroK plugin
n°348960
darklord
You're welcome
Posté le 01-04-2003 à 12:05:38  profilanswer
 

krosso a écrit :


Oui, ça marche, mais pas sur que ce soit utile  :D  


 
+1


---------------
Just because you feel good does not make you right
n°348961
darklord
You're welcome
Posté le 01-04-2003 à 12:05:53  profilanswer
 

bobuse a écrit :


instanceof est a mon sens beaucoup plus utilisable


 
c'est aussi mon avis  :whistle:


---------------
Just because you feel good does not make you right
n°348967
bobuse
Posté le 01-04-2003 à 12:08:52  profilanswer
 

DarkLord a écrit :


 
c'est aussi mon avis  :whistle:  


copaing !¡! [:runner11]


---------------
get amaroK plugin
n°348987
Cherrytree
cn=?
Posté le 01-04-2003 à 12:20:09  profilanswer
 

DarkLord a écrit :


 
c'est aussi mon avis  :whistle:  


J'aime bien instanceof. Le truc, c'est si j'ai 50 types différents sur lequel le cast peut porter, ça fait lourdingue.


---------------
Le site de ma maman
n°348989
darklord
You're welcome
Posté le 01-04-2003 à 12:22:09  profilanswer
 

Cherrytree a écrit :


J'aime bien instanceof. Le truc, c'est si j'ai 50 types différents sur lequel le cast peut porter, ça fait lourdingue.


 
ce qui est surtout lourdingue c'est que tu aies un objet donné qui puisse etre de 50 types différents. C'est ca le vrai problème à mon avis :/


---------------
Just because you feel good does not make you right
n°348991
Cherrytree
cn=?
Posté le 01-04-2003 à 12:23:40  profilanswer
 

DarkLord a écrit :


 
ce qui est surtout lourdingue c'est que tu aies un objet donné qui puisse etre de 50 types différents. C'est ca le vrai problème à mon avis :/


Je suis pas encore chef de projet. :hello: Pour l'instant je fais ce qu'on me dit.


---------------
Le site de ma maman
n°348994
darklord
You're welcome
Posté le 01-04-2003 à 12:29:09  profilanswer
 

Cherrytree a écrit :


Je suis pas encore chef de projet. :hello: Pour l'instant je fais ce qu'on me dit.


 
 :heink:


---------------
Just because you feel good does not make you right
n°349008
BifaceMcLe​OD
The HighGlandeur
Posté le 01-04-2003 à 12:43:27  profilanswer
 

Cherrytree a écrit :

Classiquement, en Java on est amené à faire :
 

Code :
  1. MyObject m = (MyObject)o;


 
Maintenant si j'ignore que o est en fait du type MyObject, comment puis-je faire le bon cast, dynamiquement ?


Ta question contient une contradiction. Soit tu connais, au moment d'écrire ton programme, le type réel de ton objet, et l'instruction ci-dessus est exactement ce que tu veux faire, soit tu ne connais pas le type de l'objet avant l'exécution, et  de nouveaux problèmes se posent, en particulier le suivant : comment caractérises-tu le type attendu ?
 
Si c'est par un objet de type Class, qui décrit la classe attendue, alors tu peux écrire :

Code :
  1. if (o.getClass() == myClass) { ...


 
Si tu te moques du type réel, mais que tout ce que tu sais, c'est que ton objet a une méthode toto() avec certains arguments bien particuliers, alors tu peux utiliser la réflexion (package java.lang.reflect) pour récupérer un objet de type Method et invoquer ainsi la méthode.
Mais si je peux me permettre, c'est carrément crade. Dans ce dernier cas, tu devrais au moins pouvoir définir une interface qui définit cette méthode commune, et qu'implémentent toutes tes classes candidates. En faisant cela, tu te ramènerais à faire un simple cast vers ce type interface ancêtre.


Message édité par BifaceMcLeOD le 01-04-2003 à 12:44:41
n°349020
Cherrytree
cn=?
Posté le 01-04-2003 à 13:00:03  profilanswer
 

Merci Biface. Avec ça tout est dit.
 
Dark > Je disais simplement que le projet sur lequel je suis est vieux de 2 ans, avec toutes les dérives que cela a inclu. Si le programme est crade, c'est que les interfaces de programmation, le framework n'arrêtent pas de changer. Je pense que ici personne n'est en mesure de gérer la situation. C'est l'anarchie, le pouvoir aux codeurs.


---------------
Le site de ma maman
n°349053
bobuse
Posté le 01-04-2003 à 13:41:25  profilanswer
 

Cherrytree a écrit :

Merci Biface. Avec ça tout est dit.
 
Dark > Je disais simplement que le projet sur lequel je suis est vieux de 2 ans, avec toutes les dérives que cela a inclu. Si le programme est crade, c'est que les interfaces de programmation, le framework n'arrêtent pas de changer. Je pense que ici personne n'est en mesure de gérer la situation. C'est l'anarchie, le pouvoir aux codeurs.


et ca tourne ?  :ouch: [:totoz]


---------------
get amaroK plugin
n°349055
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-04-2003 à 13:43:24  profilanswer
 

Cherrytree a écrit :

C'est l'anarchie, le pouvoir aux codeurs.


Je rêve depuis longtemps de travailler dans une telle boite...


---------------
J'ai un string dans l'array (Paris Hilton)
n°349206
Cherrytree
cn=?
Posté le 01-04-2003 à 14:57:08  profilanswer
 

bobuse a écrit :


et ca tourne ?  :ouch: [:totoz]


Non, bien sûr.


---------------
Le site de ma maman
n°349212
Cherrytree
cn=?
Posté le 01-04-2003 à 14:59:31  profilanswer
 

Harkonnen a écrit :


Je rêve depuis longtemps de travailler dans une telle boite...


Ah viens pas tout nous saccager ! [:zebra33]


---------------
Le site de ma maman
n°349275
Predicator
Posté le 01-04-2003 à 15:53:07  profilanswer
 

Cherrytree a écrit :


Non, bien sûr.


 
haaaaaa....
vive les timer swing dans les servlets
vive la génération dynamique de HTML par servlet (PHP ? connais pas...)
vive les connexions qui ne se ferment jamais à la base...
vivent les projets qui fuient de partout
vive l'anarchie
 
"I am an anarchist !" [:yuck]

mood
Publicité
Posté le   profilanswer
 


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

  Faire un cast dynamique

 

Sujets relatifs
création dynamique d'événements [solution]arborescence dynamique
Cast malloc : A faire ou pas ?Tableau dynamique à deux entrées avec vector
tableau à 2 dimension dynamique de CStringProbleme pour creer une librairie dynamique (.so) avec gcc
[Flash] Taille du texte dynamiquecreation d'un tableau dynamique
Double menu déroulant dynamiqueprobleme de cast dynamique avec heritage etc
Plus de sujets relatifs à : Faire un cast dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR