switch (autrechose_que_du_int)

switch (autrechose_que_du_int) - Java - Programmation

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...
 
 

Code :
  1. String[] parsedLine = line.split(" " );
  2.     switch (parsedLine[0]) {
  3.         case "@RELATION":
  4.            //mmmm
  5.         case "@ATTRIBUTE":
  6.            //qsazd
  7.         case "@DATA":
  8.            //asd
  9.         default:
  10.            // mùù
  11.              }


 
 
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
Reply

Marsh Posté le 14-10-2004 à 15:01:21   

Reply

Marsh Posté le 14-10-2004 à 15:05:04    

une table de hachage ça peut servir des fois.

Reply

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.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-10-2004 à 15:12:35    

et lire la javadoc aussi ...Switch marque avec des int ...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 14-10-2004 à 15:12:51    

pour info, le switch marche avec des enums en java1.5 ...

Reply

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 ?

Reply

Marsh Posté le 14-10-2004 à 15:16:16    

ben voila l'astuce que j'attendais benou.
merci.
et merci aussi aux autres

Reply

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 ...

Reply

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 ?


---------------
trainoo.com, c'est fini
Reply

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.


Message édité par nraynaud le 14-10-2004 à 15:24:18

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-10-2004 à 15:21:42   

Reply

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


---------------
Jubi Photos : Flickr - 500px
Reply

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 :
  1. private static final int FOO = 0, BAR = 1, BAZ = 2;
  2. private static final StringSwitcher SWITCHER =
  3.   StringSwitcher.create(new String[]{ "foo", "bar", "baz" },
  4.                         new int[]{ FOO, BAR, BAZ },
  5.                         true);


 

Code :
  1. public void startElement(String uri, String name, ...) {
  2.   switch (SWITCHER.intValue(name)) {
  3.   case FOO:
  4.      // process foo element
  5.      break;
  6.   case BAR:
  7.      // process bar element
  8.      break;
  9.   case BAZ:
  10.      // etc.
  11.   }
  12. }


Reply

Marsh Posté le 14-10-2004 à 15:42:59    

nraynaud a écrit :


edit : heu pour réellement répondre, si, dans le sens où un pointeur c'est 4 octets et un int aussi.

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

Reply

Marsh Posté le 14-10-2004 à 15:48:36    

Taz 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

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.


---------------
trainoo.com, c'est fini
Reply

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 ?

Reply

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.


---------------
trainoo.com, c'est fini
Reply

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 ...


Message édité par Taz le 14-10-2004 à 16:35:13
Reply

Marsh Posté le 15-10-2004 à 16:16:52    

bon ben je vais faire une bonne vielle liste de cas :) merci !

Reply

Sujets relatifs:

Leave a Replay

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