Агар ба майдони nullable-и объект дар Kotlin муроҷиат кунед, чӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Агар ба майдони nullable-и объект бе санҷиши null дастрасӣ ёбед, ба NullPointerException (NPE) меафтад.
Барои дастрасии бехатар, метавонед ба ин роҳҳо муроҷиат кунед:
-
Оператори даъвати бехатар (
?.): Агар объектnullбошад,nullбармегардонад, дар ғайри ҳол, даъватро иҷро мекунад.// Бигзор, ки user? User? val userName: String? = user?.name -
Оператори тасдиқи бенул (
!!): Ба равшанӣ тасдиқ мекунад, ки объектnullнест. Агар бошад,NullPointerExceptionмеандозад.// Боварӣ ҳосил кунед, истифодаи ҳушёр, метавонад ба NPE оварда расонад val userName: String = user!!.name -
Оператори Елвис (
?:): Агар объект дар тарафи чапnullбошад, арзиши пешфарз медиҳад.val userName: String = user?.name ?: "Истифодабарандаи ношинохта" -
Блокҳои
ifёwhen: Санҷиши ошкоро бароиnull.if (user != null) { val userName = user.name } else { // Ҳал кардани ҳолат, ки user null аст } -
Функсияҳои
let,run,apply,withбо даъвати бехатар:user?.let { // `it` дар ин блок як `User` не-null аст val userName = it.name }
Интихоби роҳ ба логикаи барнома ва рафтори дархостшуда дар ҳолати объект null вобаста аст. Аксар вақт, тавсия дода мешавад, ки оператори даъвати бехатар (?.) ё оператори Елвис (?:) барои пешгирӣ аз NPE истифода шаванд. Оператор !! бояд бо эҳтиёт истифода шавад.