გთხოვთ, ახსნათ, რა არის 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 -
ელვისი ოპერატორი (
?:): უზრუნველყოფს მნიშვნელობას, თუ გამოხატულება მარცხნივ არის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 (nullableString != null) { val length = nullableString.length // აქ nullableString ითვლება როგორც String }
ეს მექანიზმები საშუალებას აძლევს მკაფიოად მართოს სიტუაციები, როდესაც ცვლადი შეიძლება იყოს null, რაც მნიშვნელოვნად ამცირებს NullPointerException-ის წარმოქმნის ალბათობას პროგრამის შესრულების დროს.