ИТ вести на нашенски
Важните новини от света и у нас в до 1024 байта макс!
1024 байта
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()); } }