Saltar a contenido

Nuevo SWITCH de Java 12

El nuevo switch en Java, introducido en Java 12 como una característica experimental y estabilizado en Java 14, ofrece una versión más flexible y concisa del tradicional switch

Principales Novedades del Nuevo switch en Java:

switch como expresión

El nuevo switch puede usarse como expresión, lo que significa que puede devolver un valor.

int day = 3;
//el resultado lo asigna a diaSemana
String diaSemana = switch (day) {
    case 1 -> "Lunes";
    case 2 -> "Martes";
    case 3 -> "Miércoles";
    case 4 -> "Jueves";
    case 5 -> "Viernes";
    case 6, 7 -> "Fin de semana";
    default -> "Día inválido";
};
System.out.println(diaSemana); // Salida: Miércoles
  • El switch devuelve un valor que se puede asignar directamente a la variable diaSemana.
  • Se utiliza la flecha (->) en lugar de case: y break, lo que simplifica la sintaxis.
  • Múltiples casos pueden estar en una misma línea (ej: case 6, 7).

Uso de yield

Cuando se utiliza el nuevo switch como expresión, es posible devolver un valor en una estructura de varias líneas usando la palabra clave yield

El uso de yield permite ejecutar lógica adicional antes de devolver el resultado dentro de cada caso, lo que ofrece más flexibilidad.

    int nota = 7;

    String calificacion = switch (nota) {
        case 0, 1, 2, 3, 4 -> {
            System.out.println("Nota baja, suspenso.");
            yield "Suspenso";
        }
        case 5 -> {
            System.out.println("Nota suficiente.");
            yield "Suficiente";
        }
        case 6 -> {
            System.out.println("Nota aceptable.");
            yield "Bien";
        }
        case 7, 8 -> {
            System.out.println("Buen desempeño.");
            yield "Notable";
        }
        case 9, 10 -> {
            System.out.println("Excelente rendimiento.");
            yield "Sobresaliente";
        }
        default -> {
            System.out.println("Nota fuera de rango.");
            yield "Nota inválida";
        }
    };

    System.out.println("La calificación es: " + calificacion);
    /*Salida:
    Buen desempeño.
    La calificación es: Notable
        */
  • yield: Se usa para devolver el valor dentro de cada caso de switch. Esto es útil cuando se quiere ejecutar más de una línea de código dentro de un caso antes de devolver el resultado.
  • Bloque de código: Cada caso tiene ahora más lógica (por ejemplo, imprimir un mensaje adicional antes de devolver la calificación o realizar cálculos como media aritmética).
  • Uso de yield en lugar de return: Dado que el switch se usa como una expresión, yield es necesario para devolver un valor desde un bloque de varias líneas dentro del switch.

Información

Podéis utilizar indistintamente las dos versiones de switch, pero es necesario dominar la versión tradicional, ya que, existe mucho código escrito con esta versión. Por otro lado, tener en cuenta, que la versión nueva no funcionará en JRE/JDK inferiores a la 12.

Las versiones LTS según sus fechas:

  • Java 8 (LTS): Lanzado en marzo de 2014, sigue siendo ampliamente utilizado en la industria. Oracle proporciona soporte extendido para Java 8 hasta diciembre de 2030 (bajo contratos de soporte comercial). Es una de las versiones más adoptadas debido a su estabilidad.
  • Java 11 (LTS): Lanzado en septiembre de 2018. Es la versión LTS más popular en la actualidad para proyectos modernos. Tiene soporte hasta septiembre de 2026 (soporte extendido hasta 2027 o más si se contrata soporte comercial).
  • Java 17 (LTS): Lanzado en septiembre de 2021. Será la opción preferida a largo plazo. Tiene soporte hasta septiembre de 2029 (soporte extendido hasta 2031).
  • Java 21 (LTS): Lanzado en septiembre de 2023. Es la versión LTS más actual. Tiene grandes mejoras, se espera su integración en los nuevos proyecto.