Какви са 'nullable' типовете в Kotlin и как функционират?
sobes.tech AI
Отговор от AI
Nullable типовете в Kotlin са типове, които могат да съдържат както стойност, така и null. Те се обозначават явно със символа ? след името на типа.
Работата се базира на системата от типове на Kotlin, която предотвратява NullPointerException по време на компилация. Компилаторът изисква явна проверка за null преди да се достъпят членовете на nullable обект.
Основните начини за безопасна работа с nullable типове са:
-
Проверка за
nullсif:fun printLength(str: String?) { if (str != null) { println(str.length) // Безопасно извикване след проверка за null } else { println("Стринг null") } } -
Оператор за безопасно извикване (
?.): Връщаnull, ако обектът еnull, иначе резултата от извикването.val safeLength: Int? = str?.length // Ако str е null, safeLength ще бъде null -
Оператор Елвис (
?:): Позволява да се предостави стойност по подразбиране, ако изразът отляво еnull.val lengthOrDefault: Int = str?.length ?: 0 // Ако str е null, lengthOrDefault ще бъде 0 -
Оператор за явно не-null твърдение (
!!): Преобразува nullable тип в не-nullable. Трябва да се използва с внимание, тъй като ще изхвърлиNullPointerException, ако стойността еnull.val assertedLength: Int = str!!.length // Ще изхвърли NPE, ако str е null -
Функции let/run/apply/also с безопасно извикване:
str?.let { // Кодът ще се изпълни само ако str не е null println("Дължината на стринга: ${it.length}") }
Системата от nullable типове в Kotlin значително повишава безопасността и намалява вероятността от NullPointerException в сравнение с езици, където null може да бъде присвоен на всеки тип без явна индикация.