tgoop.com/Java_Iibrary/1671
Create:
Last Update:
Last Update:
Фича в Java 21 - Pattern Matching в "switch" блоке
До Java 21 блок switch работал только с int, enum, String и еще несколькими примитивами. С JEP 441 теперь можно:
- использовать switch с любыми объектами
- проверять типы прямо в case
- деструктуризировать record-объекты
До этой фичи, проверить тип Object можно было с помощью instanceof и код был набором if-ов с приведением типа Object к нужному:
if (obj instanceof String) {
String s = (String) obj;
System.out.println("String length: " + s.length());
} else if (obj instanceof Integer) {
Integer i = (Integer) obj;
System.out.println("Square: " + (i * i));
}
С новой фичей проверку на тип и работа с объектом конкретного типа можно через switch:
Object obj = "abc";
switch (obj) {
case String s -> System.out.println("String length: " + s.length());
case Integer i -> System.out.println("Square: " + (i * i));
default -> System.out.println("Unknown type");
}
Чище, безопаснее и не нужно вручную кастовать типы.
