Junior
Kas nutiks, jei prieisite objekto lauką, kuris gali būti null?
sobes.tech AI
Atsakymas iš AI
NullPointerException (NPE). Atsitinka, kai bandote iškviesti metodo arba prieiti prie objekto lauko, kurio nuoroda yra null.
Pavyzdys:
data class User(val name: String)
fun printUserName(user: User?) {
// Jei user == null, įvyks NullPointerException
println(user.name)
}
Norint išvengti NPE, galima naudoti:
- null patikrinimus:
fun printUserName(user: User?) { if (user != null) { println(user.name) } else { println("Naudotojas yra null") } } - Saugaus iškvietimo operatorių (
?.):fun printUserName(user: User?) { println(user?.name) // Parodys null, jei user == null, kitaip vardą } - Elvis operatorių (
?:):fun printUserName(user: User?) { val userName = user?.name ?: "Numatytas vardas" // Priskirs "Numatytas vardas", jei user?.name == null println(userName) } - Kotlin ne-null tipai:
// Šis metodas priima tik ne-null User objektą fun printUserName(user: User) { println(user.name) // Garantuoja, kad ne null }