Expresiones switch a partir de java 12


Con la llegada de Java 14 las novedades relacionadas con las expresiones switch se convirtieron en standard. Recordemos que previamente Java 12 introdujo la sintaxis lambda y el pattern-matching y Java 13 la nueva palabra reservada ‘yield’ para devolver un resultado.

Vemos algunos ejemplos para repasar qué nos ofrecen estas novedades.

Lambdas y valores de retorno

Podremos contemplar varios casos en cada rama del switch mediante pattern-matching, así como devolver valores como resultado. Además, ya no será necesario el uso de instrucciones ‘break’ para prevenir la ejecución de otras cláusulas ‘case’:

public class ExpresionesSwitch {

	public static void main(String[] args) {
		System.out.println(obtenerTipoDiaDeLaSemana("L")); // Imprime 'Laborable'
		System.out.println(obtenerTipoDiaDeLaSemana("S")); // Imprime 'Fin de semana'
		System.out.println(obtenerTipoDiaDeLaSemana("R")); // Imprime 'Día no reconocido'
	}

	// Java 12: Lambdas, pattern matching y retorno de resultado
	private static String obtenerTipoDiaDeLaSemana(String day) {
		return switch (day) {
			case "L", "M", "X", "J", "V" -> "Laborable";
			case "S", "D" -> "Fin de semana";
			default -> "Día no reconocido";
		};
	}
}

Es importante mencionar que el uso de esta nueva sintaxis nos forzará a incluir el caso ‘default’ obligatoriamente, salvo en el caso de que el switch lo hagamos con un enumerado cuyos valores estén cubiertos por todos los casos. De lo contrario, Java lanzará un error de compilación.

Cláusula ‘yield’

En Java 12, en caso de querer devolver un resultado dentro de un bloque de código, era necesario el uso de la cláusula ‘break’ junto con el valor deseado. A partir de Java 13, esta cláusula es reemplazada por ‘yield’:

	// Java 13: Uso de yield para devolver resultado en bloque de código
	private static String obtenerTipoDiaDeLaSemana(String day) {
		return switch (day) {
			case "L", "M", "X", "J", "V" -> {
					System.out.println("Ejemplo de uso de yield");
					yield "Laborable";
			}
			case "S", "D" -> "Fin de semana";
			default -> "Día no reconocido";
		};
	}
Actualizado el 26 de marzo de 2021
Comparte este artículo:
TwitterFacebookLinked In
Icon