switch (autrechose_que_du_int) - Java - Programmation
Marsh Posté le 14-10-2004 à 15:12:02
meul> non, y'a pas d'astuce, tu fais une table de hashage ou des if, comme Taz te dit.
Marsh Posté le 14-10-2004 à 15:12:51
pour info, le switch marche avec des enums en java1.5 ...
Marsh Posté le 14-10-2004 à 15:16:14
j'ai pas testé la jvm1.5, mais est-ce que c'est pas tout simplement par les les enum sont convertibles en int tout simplement ?
Marsh Posté le 14-10-2004 à 15:16:16
ben voila l'astuce que j'attendais benou.
merci.
et merci aussi aux autres
Marsh Posté le 14-10-2004 à 15:17:22
Taz a écrit : est-ce que c'est pas tout simplement par les les enum sont convertibles en int tout simplement ? |
non, je pense pas ... c'est des objets ...
Marsh Posté le 14-10-2004 à 15:19:56
Jubi > au lieu de dire que la spec du langage est dans les javadocs, il est fait ce visiteur ?
Marsh Posté le 14-10-2004 à 15:21:42
Taz a écrit : j'ai pas testé la jvm1.5, mais est-ce que c'est pas tout simplement par les les enum sont convertibles en int tout simplement ? |
non, c'est réellement des pointeurs, mais on a une réelle garantie (par la spec du langage) que les objets sont uniques en flyweight.
alors qu'un enum "bien typé" fait à la main en java, il faut savoir faire ...
edit : heu pour réellement répondre, si, dans le sens où un pointeur c'est 4 octets et un int aussi.
Marsh Posté le 14-10-2004 à 15:26:28
nraynaud a écrit : Jubi > au lieu de dire que la spec du langage est dans les javadocs, il est fait ce visiteur ? |
c en cours patron
Marsh Posté le 14-10-2004 à 15:37:03
tu peux utiliser CGLLIB et son StringSwitcher : http://cglib.sourceforge.net/apido [...] tcher.html
voila un exemple pris sur le blog du createur :
Code :
|
Code :
|
Marsh Posté le 14-10-2004 à 15:42:59
nraynaud a écrit : |
c'est normalisé ça ?
vous avez jetez un coup d'oeil aux enum de C# , on peut spécifier le type sous-jacent et y a un attribut spécial pour les enums employés comme des drapeaux bit-à-bit, c'est vraiment très sympa.
par contre, je lis la doc de 1.5, le fais de gérer ça comme une vrai classe, ça à l'air terrible
Marsh Posté le 14-10-2004 à 15:48:36
Taz a écrit : c'est normalisé ça ? |
je me souviens plus de C#, il faut que je m'y remette bordel ! je deviens complètement spécialisé.
ouais, c'est vraiment des enum biens typés d'avant, mais remontés dans la syntaxe, don y'a des champs et des méthodes dans les valeurs.
ça sanctuarise le visiteur implémentation instanceof, mais en version bien typée.
Marsh Posté le 14-10-2004 à 16:19:45
puisqu'on en est a parlé de 1.5, je ne trouve pas de référence sur StringBuilder. est-ce que la spécification a changée de telle sorte de que s = a + b + c + d génère un StringBuilder temporaire ?
Marsh Posté le 14-10-2004 à 16:23:05
Taz > c'est pas une spec, mais un truc décrit comme une "optimisation possible" dans la spec, donc c'est aux fournisseurs de compilos de se démerder.
Marsh Posté le 14-10-2004 à 16:26:44
OK, je viens de dézipper et effectivement, c'est remplacé.
edit : par contre au niveau des autres optimisation, y a toujours rien ...
Marsh Posté le 15-10-2004 à 16:16:52
bon ben je vais faire une bonne vielle liste de cas merci !
Marsh Posté le 14-10-2004 à 15:01:21
le switch marche que avec des int ou des char ?
mon code marche pas, il me dit string trouvé, et int attendu...
Merci !
edit : en meme temps c logique que ca marche pas, ca
doit comparer les adresses la. Y'a pas une astuce qui
fait des equals(..) de la classe switchée?
Message édité par meumeul le 14-10-2004 à 15:03:36