var: локальный вывод типа
var (Java 10) позволяет не писать тип локальной переменной — компилятор выводит его из инициализатора. Важно: это НЕ динамическая типизация — тип статический и фиксируется на компиляции, просто не пишется руками. var работает только для локальных переменных с инициализатором (не для полей, параметров и без значения).
Когда уместно: когда тип очевиден из правой части (var users = new ArrayList<User>()) — убирает дублирование. Когда вредит: когда из правой части тип неочевиден (var x = service.process()) — теряется читаемость. var — про устранение шума, а не про сокрытие типов.
Текстовые блоки
Текстовый блок (Java 15) — многострочный строковый литерал в тройных кавычках: убирает ад экранирования и конкатенации для встроенного JSON, SQL, HTML.
Компилятор аккуратно убирает «случайные» отступы (incidental whitespace) по самой левой значимой строке, поэтому блок можно красиво выровнять по коду. Это обычная String — просто удобный способ её записать.
String json = """
{
"id": 42,
"name": "Ann"
}
""";
switch-выражения
switch-выражение (Java 14) возвращает значение и использует стрелочный синтаксис case L -> …, у которого нет проваливания (fall-through) и не нужен break. Для блока с вычислением значение отдают через yield.
Плюс исчерпываемость: switch-выражение по enum (или sealed-типу) обязано покрыть все варианты — компилятор это проверяет, что надёжнее старого statement-switch с легко забываемым break и default.
int days = switch (month) {
case FEB -> 28;
case APR, JUN, SEP, NOV -> 30;
default -> 31;
};
Прочие удобства
enhanced instanceof с паттерном (instanceof String s) — см. урок про pattern matching. Helpful NullPointerExceptions (Java 14, по умолчанию с 15) точно указывают, ЧТО именно было null в цепочке a.b().c — резко ускоряет отладку.
Эти мелочи по отдельности невелики, но вместе делают современную Java заметно лаконичнее и безопаснее, чем «Java 8 из памяти».
Как отвечать на собеседовании
Подчеркните, что var — статический вывод типа (не динамика), только для локальных переменных, и его уместность зависит от очевидности правой части. Назовите текстовые блоки (JSON/SQL без экранирования, incidental whitespace) и switch-выражения (возвращает значение, без fall-through, yield, исчерпываемость по enum/sealed). Бонус — helpful NPE messages.