Ключевое слово var появилось в Java 10. Указание
var
вместо типа локальной переменной применяет к ней механизм вывода типов (type inference). Тип будет вычислен на этапе компиляции из того, чем переменная инициализируется.Отсюда несколько выводов. Во-первых, нельзя использовать
var
в полях класса, параметрах метода, и где-либо еще кроме локальных переменных. Во-вторых, обязана быть инициализация с понятным типом – варианты var x;
или var x = null;
не скомпилируются. И главное следствие – к концу компиляции у таких переменных фиксированный и известный тип, который не может быть изменен позднее. А это и есть определение строгой типизации.
Ответ: нет, выводимый тип – строгий. Более того, типизация остается статической.
Главное упущение – в инициализации разрешено использовать diamond operator. В обычных обстоятельствах в нём выведется правильный generic-тип, но в случае
var
информации недостаточно, и типом-параметром будет Object
.