Меньше двух недель осталось до выхода новой версии java. 17 марта анонсирован релиз JDK 14. В нём будет 16 фич, давайте посмотрим на некоторые из них.
1️⃣ Текстовые блоки — многострочные строки, ограниченные тремя двойными кавычками.
String html = """
select *
from users
""";
То, ради чего многие перешли на котлин, теперь есть и в java.Удобно для чтения и написания частей HTML, XML, SQL, JSON.
2️⃣ Изменения в switch.
✅ появился способ не писать break. Если использовать вместо двоеточия стрелочку
то выполнится только код этого кейса.
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
Напомню, что если в обычной форме не написать в конце блока break, то поиск соответствий после выхода из блока продолжится. В примере напечатаются обе строки:case 1: System.out.println("1");
default: System.out.println("0");
✅ switch теперь возвращает значение. Если строк много, то используется слово yield.int j = switch (day) {
case MONDAY -> 0;
case TUESDAY -> 1;
default -> {
int res = f(k);
yield res;
}
};
3️⃣ Сокращение размера кода при сужении типа. Каждому, кто переопределял метод equals, знаком этот паттерн:if(o instanceof String) {
String s = (String) o;
// use s
}
Теперь проверка и приведение типа объединены:if(o instanceof String str) {
// can use str here
}
Если в if несколько условий, то область видимости переменной зависит от типа их связи. В условиях, соединённых через И, переменную можно использовать:if(o instanceof String s && s.length() > 5)
В условиях, соединённых через ИЛИ, переменная не будет видна:❌
if(o instanceof String s || s.length() > 5)
4️⃣ Больше информации в NullPointerException.Теперь при возникновении исключения будет доступна не только строка, где это произошло, но и описание ситуации.
Exception in thread "main" java.lang.NullPointerException:
Cannot read field "j" because "b" is null
at Pr.main(Pr.java:5)
По умолчанию эта фича не работает, для её включения нужно установить флаг:-XX:+ShowCodeDetailsInExceptionMessages
#core