0%
La coincidencia de patrones: adiós a instanceof y al cast

La coincidencia de patrones

instanceof con variable, switch sobre tipos, patrones de record y guardas.

10-15 min

La coincidencia de patrones: adiós a instanceof y al cast

Toda base de código Java 8 contiene esta secuencia, a menudo cientos de veces: un instanceof, una llave, un cast al tipo que acabamos de comprobar, una variable local con un nombre puesto a toda prisa. Tres líneas para una sola idea. La repetición es mecánica, así que no llama la atención, y precisamente por eso es peligrosa: el día en que se copia y pega la rama Cercle para escribir la rama Rectangle y se olvida cambiar el cast, se obtiene una ClassCastException en tiempo de ejecución en un código que la revisión había dado por bueno.

La coincidencia de patrones suprime la redundancia fusionando la comprobación y la extracción. Ya no se dice «si es un círculo, trátalo como un círculo», sino «si este valor tiene la forma de un círculo de radio r». El cast desaparece del código fuente y, con él, desaparece de sus posibilidades el error de conversión. Combinado con los records y las clases selladas vistos anteriormente, el mecanismo va más lejos: permite que el compilador rechace un tratamiento incompleto.

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!