Ответ
Да, поддерживает. Ключевое слово 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):
- Только для локальных переменных: Нельзя использовать для полей класса, параметров методов или возвращаемых типов.
- Обязательная инициализация:
var x;— ошибка компиляции. - Нельзя инициализировать null:
var y = null;— ошибка (неоднозначный тип). - Не для лямбда-параметров:
(var a, var b) -> a + b— допустимо только с явным типом-интерфейсом.
Важно: var не делает Java динамически типизированной. Тип определяется при компиляции и не может быть изменен.