Ներկայացրեք, թե ինչ է null safety-ը Kotlin լեզվում։
sobes.tech AI
Պատասխան AI-ից
Null safety — դա Kotlin լեզվի ֆունկցիա է, որը կանխում է null հղումներին կապված սխալները: Դա հասնում է երկու տեսակի հղում ստեղծելով՝ nullable (թույլատրում է null) և non-nullable (թույլատրում է null չլինել):
Non-nullable տիպերը հայտարարում են սովորական կերպով:
var nonNullableString: String = "Hello" // Չի կարող լինել null
Nullable տիպերը հայտարարում են ? նշանի օգտագործմամբ՝ տիպի անունից հետո:
var nullableString: String? = "Hello" // Կարող է լինել null
nullableString = null
Kotlin-ը պահանջում է բացահայտ մշակել nullable տիպերը՝ կանխելով ուղիղ դիմումը նրանց անդամներին առանց նախնական ստուգման null-ի համար: Դրա համար տրամադրվում են հետևյալ մեխանիզմները՝
-
Անվտանգ կանչի օպերատոր (
?.): Կոչում է մեթոդ կամ դիմում է հատկությանը միայն այն դեպքում, եթե օբյեկտը չիnull. հակառակ դեպքում վերադարձնում էnull:val length = nullableString?.length // length կլինի Int? կամ null -
Elvis օպերատոր (
?:): Առաջարկում է նախնական արժեք, եթե ձախ կողմի արտահայտությունըnullէ:val nonNullLength = nullableString?.length ?: 0 // nonNullLength կլինի Int, 0 եթե nullableString null -
!!ոչ-null հաստատման օպերատոր: Փոխում է nullable տիպը non-nullable, եթե արժեքըnullէ, նետում էNullPointerException. Օգտագործվում է, երբ ծրագրավորողը վստահ է, որ արժեքը չիnull:val sureLength = nullableString!!.length // Նետում է NullPointerException եթե nullableString null է -
if ստուգումներ: Տрадиցիոն
nullստուգումif-ով: Սմարթ կասթինգ (խելացի վերածում) կատարվում էnull-ի ստուգումից հետո՝ifբլոկում, եթե ստուգումը անցել է:if (nullableString != null) { val length = nullableString.length // Այստեղ nullableString-ը դիտարկվում է որպես String }
Այս մեխանիզմները թույլ են տալիս բացահայտ կառավարել այն իրավիճակները, երբ փոփոխականը կարող է լինել null, ինչը զգալիորեն նվազեցնում է NullPointerException-ի առաջացման հավանականությունը ծրագրի գործարկման ժամանակ։