В вашем примере "hello"
- это String
литерал . В Kotlin, даже если вы опускаете тип для переменной, ее тип выводится. Компилятор выводит тип для var a
из выражения инициализатора, поэтому тип a
равен String
. Получаемое предупреждение означает, что проверяемое вами выражение a
всегда равно String
.
Объявление вашей переменной эквивалентно var a: String = "hello"
, то есть переменная может ссылаться только на String
, назначение любого другого типа недопустимо.
Например, если вы измените объявление переменной на var a: Any = "hello"
, предупреждения не будет, поскольку переменная теперь может содержать экземпляр любого типа, а не только String
.