Como tengo varios casos String que deben manejarse de la misma manera, intenté:

switch(str) {
// compiler error
case "apple", "orange", "pieapple":
  handleFruit();
  break;
}

Pero me sale un error del compilador.

En Java, debería llamar a la misma función caso por caso:

switch(str) {
  case "apple":
      handleFruit();
       break;
  // repeat above thing for each fruit
  ...
}

¿No hay un estilo más simple?

10
Leem 12 ene. 2018 a las 23:21

3 respuestas

La mejor respuesta

Debe usar la palabra clave case para cada cadena de esta manera:

switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        handleFruit();
        break;
}

Editar 05/02/2019

Java 12

A partir de Java 12, se propone una nueva sintaxis de mayúsculas y minúsculas, así que para resolver este problema, esta es la forma:

switch (str) {
    case "apple", "orange", "pieapple" -> handleFruit();
}

Ahora, puede hacer las elecciones separadas por comas, la flecha -> y luego la acción que desea hacer.

Otra sintaxis también es:

Considere que cada caso devuelve un valor y desea establecer valores en una variable, supongamos que handleFruit() devuelve un String la sintaxis anterior debería ser:

String result;  //  <-------------------------- declare 
switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        result = handleFruit();  //      <----- then assign
        break;
}

Ahora con Java 12, puedes hacerlo así:

String result = switch (str) { //  <----------- declare and assign in one shot
    case "apple", "orange", "pieapple" -> handleFruit();
}

Buena sintaxis

11
YCF_L 2 may. 2019 a las 17:21

Recibió un error porque usó una coma entre consultas de casos. Para definir varios casos, debe usar punto y coma así.

switch (str) {
case "orange": case "pineapple": case "apple":
     handleFruit();
     break;
}
3
Mikhail Zharnikov 12 ene. 2018 a las 20:31

Java admite fall-through cuando no tiene {{X0} }:

case "apple":
case "orange":
case "pieapple":
    handleFruit();
    break;
6
dasblinkenlight 12 ene. 2018 a las 20:23