lateinit?lateinit — это ключевое слово, которое позволяет объявить non-null var свойство без указания начального значения. По сути, это обещание компилятору, что свойство будет инициализировано до первого обращения к нему.
var свойствам (не val)Int, Boolean или Doublelateinit свойству выбрасывает UninitializedPropertyAccessExceptiononCreate())@Before / setUp()Пример:
@Inject
lateinit var userRepository: UserRepository
Ты можешь безопасно проверить, было ли инициализировано lateinit свойство, с помощью рефлексии — свойства isInitialized:
if (::userRepository.isInitialized) {
userRepository.fetchData()
}
Это помогает избежать потенциальных падений, когда состояние инициализации неопределённо.
Отдавай предпочтение инъекции через конструктор или nullable типам вместо lateinit, когда это возможно. lateinit жертвует безопасностью на этапе компиляции, поэтому его следует использовать только тогда, когда момент инициализации действительно находится вне твоего контроля.
Проверка инициализации lateinit свойства выполняется с использованием синтаксиса рефлексии с оператором ::, что позволяет безопасно проверить инициализацию без выброса исключения.
Новый — ещё не проверен сообществом
Вы