Patrones con guardas when
Añade condiciones a los casos de un patrón usando guardas when.
Comparación de Código
✕ Java 8
if (shape instanceof Circle c) {
if (c.radius() > 10) {
return "large circle";
} else {
return "small circle";
}
} else {
return "not a circle";
}
✓ Java 21+
return switch (shape) {
case Circle c
when c.radius() > 10
-> "large circle";
case Circle c
-> "small circle";
default -> "not a circle";
};
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Coincidencia precisa
Combina tipo + condición en una sola etiqueta de caso.
Estructura plana
Sin if/else anidados dentro de los casos del switch.
Intención legible
La cláusula when se lee como lenguaje natural.
Enfoque Antiguo
if anidado
Enfoque Moderno
Cláusula when
Desde JDK
21
Dificultad
Intermedio
Soporte JDK
Patrones con guardas when
Disponible
Ampliamente disponible desde JDK 21 LTS (sept. 2023)
Cómo funciona
Los patrones con guardas permiten refinar una coincidencia de tipo con una condición booleana adicional. Esto mantiene toda la lógica de ramificación dentro del switch en lugar de anidar sentencias if dentro de los casos.
Documentación Relacionada