Java 21 с JEP 440 - Record patterns
Новия JEP прави рекордите още по използваеми и малко неземни
JEP 440: Record Patterns
След Java 16 си имахме
// As of Java 16
record Point(int x, int y) {}
static void printSum(Object obj) {
if (obj instanceof Point p) {
int x = p.x();
int y = p.y();
System.out.println(x+y);
}
}
Обаче след Java 21 използвайки рекорд можем да деструктираме полета от него
// As of Java 21
static void printSum(Object obj) {
if (obj instanceof Point(int x, int y)){
System.out.println(x+y);
}
}
Може и да са nested , което на мен ми изглежда малко прекалено нечетимо и смахнато ама пък хората харесват TypeScript и JavaScript така че нищо не ме учудва.
// As of Java 21
static void printUpperLeftColoredPoint(
Rectangle r) {
if (r instanceof
Rectangle(ColoredPoint ul,
ColoredPoint lr)) {
System.out.println(ul.c());
}
}