LLevo programando en Java lo menos desde el 2000. Recuerdo empezar con Java 1.2, que pasó a llamarse Java 2 y que tenía Swing como gran novedad, «reemplazando» AWT. Desde entonces y de forma más o menos contínua, en el curro programo en Java.
Todo esto hace que tenga ya mis formas de hacer las cosas, con las que me encuentro cómodo, y que no ande muy pendiente de las nuevas novedades que van saliendo en las nuevas versiones. Pero me voy tropezando con código que hace gente más joven o que encuentro por internet. Aunque algunas cosas me parecen alternativas dudosas, como el tema de lambdas y fluent apis, otras veo que claramente son útiles.
Y aunque son «antiguas» (Java 17), dejo aquí un par de mejoras en instanceof y en switch
Java Instanceof Pattern Matching
Algo frecuente de tener que hacer es comprobar el tipo de una objeto que te llega para convertirlo al tipo adecuado. En mi forma tradicional, hacía cosas como esta
if (value instanceof String) {
String aString = (String)value;
// Usamos aString como String en lo que necesitemos
}
Desde Java 17, ahora es posible hacerlo de una forma más directa
if (value instanceof String aString) {
// Nos ahorramos el cast, ya tenemos aString como String
}
Java Switch Pattern Matching
Quizás no tan frecuente, pero relacionado con lo anterior. Si tenemos posibilidades de que el objeto que nos pasan sea de varios tipos posibles, antes había que hacer un if para casa caso. Ahora switch nos permite hacerlo más fácilmente.
switch (value) {
case Integer anInteger :
System.out.println("Es entero "+anInteger);
break;
case String aString:
System.out.println("Es string "+aString);
break;
case Double aDouble :
System.out.println("Es double "+aDouble);
break;
default:
System.out.println("Ninguno de los anteriores");
}
Así que ya sé alguna nueva cosa útile que ahorra código y, lo más importante, el firme propósito de revisar las novedadees tanto de las versiones de java que no he revisado como de las nuevas.