Czym są typy 'nullable' w Kotlin i jak one działają?
sobes.tech AI
Odpowiedź od AI
Typy nullable w Kotlinie to typy, które mogą zawierać zarówno wartość, jak i null. Są one wyraźnie oznaczone symbolem ? po nazwie typu.
Działanie opiera się na systemie typów Kotlin, który zapobiega NullPointerException podczas kompilacji. Kompilator wymaga jawnej kontroli null przed dostępem do członków obiektu typu nullable.
Główne sposoby bezpiecznej pracy z typami nullable:
-
Sprawdzanie
nullza pomocąif:fun printLength(str: String?) { if (str != null) { println(str.length) // Bezpieczne wywołanie po sprawdzeniu null } else { println("String null") } } -
Operator bezpiecznego wywołania (
?.): Zwracanull, jeśli obiekt jestnull, w przeciwnym razie wynik wywołania.val safeLength: Int? = str?.length // Jeśli str jest null, safeLength będzie null -
Operator Elvisa (
?:): Pozwala na podanie wartości domyślnej w przypadku, gdy wyrażenie po lewej stronie operatora jestnull.val lengthOrDefault: Int = str?.length ?: 0 // Jeśli str jest null, lengthOrDefault będzie 0 -
Operator jawnego nie-null (
!!): Konwertuje nullable typ na nie-nullable. Należy używać ostrożnie, ponieważ wyrzuciNullPointerException, jeśli wartość będzienull.val assertedLength: Int = str!!.length // Wyrzuci NPE, jeśli str jest null -
Funkcje let/run/apply/also z bezpiecznym wywołaniem:
str?.let { // Kod wykona się tylko, jeśli str nie jest null println("Długość łańcucha: ${it.length}") }
System nullable typów Kotlin znacząco zwiększa bezpieczeństwo i zmniejsza prawdopodobieństwo wystąpienia NullPointerException w porównaniu z językami, w których null może być przypisany do dowolnego typu bez wyraźnego oznaczenia.