Java 21 Features

Abror Abduganiev
2 min readMay 8, 2024

JDK 21 version da qanday o’zgarishlar bo’ldi

1 Record pattern

2 Switch pattern matching

3 Instance main method

Record pattern

Record bizga immutable objectlar hozil qilish uchun struktura taqdim etadi. Misol uchun bizda Point record bo’lsin.

record Point(int a, int b){}

Object obj = new Point(10,20);

agar point field lariga murojaat qilmoqchi bo’lsam quyidagicha yondashuv talab qilinar edi.

if (obj instanceof Point point){
int a = point.a();
int b = point.b();
System.out.println(a+b);
}

Java 21 version da record pattern yordamida bu ishni ancha sodda tarzda amalga oshirishimiz mumkin.

if (obj instanceof Point(int x, int y)) {

System.out.println(x+y);
}

bunda x va y qiymatlarini to’g’ridan to’g’ri foydalanish imkoniga ega bo’lamiz.

Switch pattern matching

Java 16 version da switch operatori yordamida pattern matching qilish imkoniyati qo’shilgan edi. 21 version ga kelib record pattern ham switch expression bilan birgalikda ishlashi ta’minlangan.

Misol uchun 16 version da biz pattern matching ni quyidagicha amalga ishirishimiz mumkin edi

record Point(int x, int y) {}

public void print(Object o) {

switch (o) {

case Point p -> System.out.printf("o is a position: %d/%d%n", p.x(), p.y());
case String s -> System.out.printf("o is a string: %s%n", s);
default -> System.out.printf("o is something else: %s%n", o);
}
}

Java 21 version da switch operatori bilan record pattern larini quyidagicha yozish imkoniyatiga ham ega bo’ldik.

public void print(Object o) {

switch (o) {

case Point(int x, int y) -> System.out.printf("o is a position: %d/%d%n", x, y);
case String s -> System.out.printf("o is a string: %s%n", s);
default -> System.out.printf("o is something else: %s%n", o);
}
}

Instance main method

Java dasturlarini yozish mobaynida unnamed module hamda unnamed package tushunchalari bizga juda tanish. Agar module-info.java class ochilmasa compiler avtomatik tarzda modulni aniqlab olar edi. Proyekt ichida root package ga tegishli classlarni unnamed package member classlar sifatida belgilanar edi. Compiler ularni compile qilish va run qilish uchun hech qanday muammolarga uchramas edi.

Huddi shu kabi endi biz Java da unnamed class larni ham yoza olamiz.

Misol uchun bizda quyidagicha kod berilgan bo’lsin.

public class TestAConcept {

public static void main(String[] args) {

System.out.println(method());
}

static String method() {

//...
}
}

Java 21 version da biz class larsiz va public static modifier larsiz main method ini elon qila olamiz.

void main(String[] args) {

System.out.println(method());
}

String method() {

//...
}

--

--