Я понимаю, что могу повторить это в Kotlin, но кажется, что язык разработан, чтобы избежать практики, подобной этой.
Я бы сказал, что наоборот, он предназначен для поддержки.Например, если у вас есть
val account: UserAccount? = ...
if (account == null){
openLogin()
} else {
...
}
, то компилятор знает, что account
не null
в ветви else
, и он может эффективно иметь необнуляемый тип UserAccount
.(Небольшое предостережение: в вашем случае account
, скорее всего, будет var
, что накладывает некоторые ограничения на умные приведения.)
Как мне поступить в реализации этой системы через Kotlin, еслиЯ добавляю переменную со значением NULL?
Вы не добавляете переменную, вы указываете, что account
имеет тип NULL.
Хотя для этого конкретного случая может быть лучше использовать lateinit
, в зависимости от ваших требований:
lateinit var account: UserAccount
...
if (!::account.isInitialized) {
openLogin()
}