В Java вы можете создать строковую переменную или пару переменных, не добавляя к ней никакого значения
На самом деле в этом случае она неявно объявляется null
.Котлин этого не делает из-за своего механизма обнуляемости.Вы должны явно объявить переменную nullable, чтобы разрешить null:
var str: String // does not work
var str: String? // does not work
var str: String? = null // works
Также см. этот ответ .
Ваш другой вариант действительно состоит в том, чтобы пометить его lateinit
:
lateinit var str: String // works
Если вам необходимо проверить, не инициализирована ли она перед ее использованием, вы используете
if (::str.isInitialized)
Но на самом деле вам следует избегать этой проверки и просто убедиться, что она инициализированаперед его использованием.