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 variablediaSemana
. - Se utiliza la flecha (
->
) en lugar decase:
ybreak
, 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 dereturn
: Dado que elswitch
se usa como una expresión,yield
es necesario para devolver un valor desde un bloque de varias líneas dentro delswitch
.
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.