2010-12-04 31 views
9

Mon application requise pour avoir une déclaration de cas de commutation de type String.Possible d'avoir un commutateur (java.lang.Object) en java?

je besoin de quelque chose comme ceci:

Object list1 = "list1"; 
    Object list2 = "list2"; 
    Object list3 = "list3"; 

    Object option = "list1"; 
    switch (option) { 
     case list1: // Do something 
     case list2: // Do something 
     case list3: // Do something 
     default: // Do something 
    } 

Est-il possible d'avoir?

EDIT:

Est-il préférable d'utiliser le cas de commutation pour des conditions allant plutôt n avec if et else? S'il vous plaît commenter?

+0

Vous pouvez également utiliser le polymorphisme: http://stackoverflow.com/questions/1425659/alternative-to-switch-case-in-java/1425684#1425684 – OscarRyz

Répondre

11

Puisque vous allumez des chaînes, je suppose que les chaînes sont connues au moment de la compilation. Dans ce cas, vous pouvez utiliser une énumération.

public enum MyStrings{ 

     LIST1, LIST2 
    } 

Puis

switch(MyStrings.valueOf(option)){ 

     case LIST1: do something; break; 
     //etc. 
    } 
+0

Merci dude :) utile. S'il vous plaît voir ma mise à jour dans la question. –

3

Voir cette question: Why can't I switch on a String?

pas pris en charge, mais devrait être en Java 7.

Edit: en fait semble être String s seulement, pas Object s

Peut-être chaque objet doit implémenter une méthode qui contient la logique que vous essayez de mettre dans l'instruction switch?

0

Non, vous ne pouvez pas faire cela (essayez-le et découvrez-le). Mais si vous voulez cela, peut-être une carte comme une HashMap serait mieux adaptée à vos besoins.

0

Non, utiliser d'autres collections comme hashmap ou utiliser les index de tableau pour faire la même chose, créer un ensemble d'éléments et de mettre un boîtier de commutation sur indice

0

Le commutateur peut être pris en charge pour vérifier Str ing, Integer et d'autres types de données primitifs, mais il n'est pas approuvé avec succès dans les comparaisons d'objets.