Поддерживает ли Java 17 ключевое слово var?

«Поддерживает ли Java 17 ключевое слово var?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, поддерживает. Ключевое слово var для вывода типа локальных переменных было добавлено в Java 10 и доступно во всех последующих версиях, включая Java 17.

Назначение: var позволяет объявить локальную переменную без явного указания типа, который компилятор выводит из инициализатора.

Примеры использования:

var list = new ArrayList<String>(); // Тип: ArrayList<String>
var message = "Hello, Java 17!";    // Тип: String
var stream = list.stream();         // Тип: Stream<String>

Важные ограничения (что НЕЛЬЗЯ делать с var):

  1. Только для локальных переменных: Нельзя использовать для полей класса, параметров методов или возвращаемых типов.
  2. Обязательная инициализация: var x; — ошибка компиляции.
  3. Нельзя инициализировать null: var y = null; — ошибка (неоднозначный тип).
  4. Не для лямбда-параметров: (var a, var b) -> a + b — допустимо только с явным типом-интерфейсом.

Важно: var не делает Java динамически типизированной. Тип определяется при компиляции и не может быть изменен.