Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpBsLt 12 of 123 menu
◀ ▶

Отложенная инициализация в Kotlin

Свойство var иногда нельзя заполнить в момент создания объекта: значение появится позже, в методе. Модификатор lateinit откладывает инициализацию. Тип такого свойства - не примитив и не nullable: строка, свой класс или список:

class Profile { lateinit var nickname: String fun rename(name: String) { nickname = name } }

Пока в свойство ничего не записали, чтение прерывает программу. Сначала вызывают метод, который записывает значение, и только потом читают поле:

fun main() { val profile = Profile() profile.rename("ann") println(profile.nickname) }

lateinit не ставят на val и на Int, Double, Boolean. Для числа, которое появится позже, оставляют обычное начальное значение или тип с вопросом. Проверить, записано ли значение, можно из того же класса:

class Profile { lateinit var nickname: String fun ready(): Boolean { return ::nickname.isInitialized } }

Сделайте класс Employee со свойством lateinit var name: String. Добавьте метод hire, который записывает имя.

Создайте объект, вызовите hire со строкой "john" и выведите имя.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить