Aunque realmente las nuevas switch expressions no son una novedad reciente, ya que están disponibles desde la versión 14 de Java, es otra de esas mejoras que pasan desapercibidas aunque, con un pequeño cambio de sintaxis, proporcionan una versión moderna, limpia, segura y expresiva de los tradicionales switch.
¿Qué aporta el switch moderno?
1. Es una expresión, no solo una sentencia
El nuevo switch puede devolver valores directamente a una variable haciendo uso del operador flecha.
| |
2. Evita el ‘fall-through’
En los tradicionales switch, si te olvidabas un break provocaba la ejecución de varios case. Ahora ya no son necesarios, eliminado verbosidad y aportando robustez y permitiendo igualmente agrupar casos.
| |
3. Menos código y más claro
En el switch clásico, había que declarar la variable, abrir el switch, asignar valor en cada case, acordarte de los break y cerrar la expresión correctamente.
| |
4. Uso de ‘yield’ para casos más complejos
Se trata de un nuevo operador, un return que sólo existe dentro de las nuevas switch expressions, y que no finaliza la ejecución del método. Permite desarrollar un case más complejo y devolver un valor en el mismo.
| |
5. Switch más exhaustivos usando Enums
Otra mejora interesante, disponible desde Java 17, es el uso de Enums para definir los case. De esta forma el desarrollador está obligado a usar todos sus valores, obteniendo un aviso del compilador en caso contrario.
| |
Conclusiones
Las nuevas switch expressions no cambian la forma de pensar en condiciones, pero sí nos permite expresarlas con menos ruido y más seguridad. Es una pieza pequeña, pero encaja muy bien en el Java moderno: más conciso, más claro y más difícil de romper por descuido.