La coincidencia de patrones (Pattern Matching) en switch es una característica introducida en Java 17 como una mejora en la sintaxis del switch, permitiendo evaluar tipos de manera más sencilla y concisa. Esta funcionalidad facilita la escritura de código más limpio y seguro al eliminar la necesidad de casting manual.
Veamos un ejemplo, antes de java 17 haciamos:
static void procesar(Object obj) {
switch (obj.getClass().getSimpleName()) {
case "String":
String s = (String) obj;
System.out.println("Es una cadena: " + s.toUpperCase());
break;
case "Integer":
Integer i = (Integer) obj;
System.out.println("Es un número: " + (i * 2));
break;
default:
System.out.println("Tipo no soportado");
}
}
Y en Java 17:
static void procesar(Object obj) {
switch (obj) {
case String s -> System.out.println("Es una cadena: " + s.toUpperCase());
case Integer i -> System.out.println("Es un número: " + (i * 2));
default -> System.out.println("Tipo no soportado");
}
}
Esta disponible a partir de Java 17 en vista previa y consolidado en versiones posteriores. Algo a tener en cuanta es que solo se puede utilizar en switch con expresiones y no con estructuras más antiguas.
El pattern matching en switch es una mejora significativa que permite un código más limpio y expresivo. Reduce el uso de casts y mejora la legibilidad del código, haciendo que la programación en Java sea más moderna y eficiente.