Nullable-объекты в Kotlin
Переменная типа User? может хранить объект класса User
или null. Без вопросительного знака в типе null
присвоить нельзя:
class User(val name: String)
fun main() {
val found: User? = User("john")
val missing: User? = null
println(found?.name)
println(missing)
}
Свойство класса тоже может быть nullable. Тогда у объекта поле иногда пустое:
class User(val name: String) {
var manager: User? = null
}
fun main() {
val boss = User("eric")
val worker = User("john")
worker.manager = boss
println(worker.manager?.name)
}
Прямой доступ к свойству nullable-ссылки без проверки
компилятор не пропустит. Сначала нужно убедиться,
что ссылка не null, либо применить безопасный
вызов ?.:
class User(val name: String)
fun main() {
val user: User? = null
// println(user.name) // ошибка компиляции
println(user?.name)
}
Объявите var leader типа User?.
Сначала запишите объект User, затем присвойте null.
Сделайте класс Team со свойством captain
типа User?. Создайте команду без капитана
и выведите имя капитана безопасным обращением.