1) ты сам следишь, инициализирована она или нет - слабая типизация 2) при этом всё ещё var - допустимо только для локальной переменной с маленькой областью видимости и крошечной зоной ответственности 3) никакой зануляемости, что очень важно для того чтобы ничего не утекало.
Про «никакой типизации» не понял, ты же явно указываешь тип, когда создаёшь лейтинит
Ладно, "никакой" надо изменить на "слабая"
В каком месте она слабая, если ты явно указываешь тип и изменить его не можешь?
Тип-то я не могу изменить, но так же язык мне не подсказывает, инициализирована она или нет. var foo: Foo? = null ... foo.bar // ошибка foo = Foo() foo.bar // нет ошибки
Ну это уже другой вопрос и тут я согласен, что это косяк
Так это и есть вопрос типизации, потому что в котлине тип Foo? и Foo это разные типы. А lateinit var сводит их в один, по факту.
Лейтинит запрещает нулабл
Обсуждают сегодня