რა მოხდება, თუ Kotlin-ში nullable ობიექტის ველს მივმართავთ?
sobes.tech AI
პასუხი AI-სგან
თუ მიუვალ ობიექტის nullable ველს null-ის შემოწმების გარეშე მიიწვდებით, მოხდება NullPointerException (NPE).
უსაფრთხო წვდომისთვის შეგიძლიათ გამოიყენოთ შემდეგი მიდგომები:
-
უსაფრთხო ზარის ოპერატორი (
?.): აბრუნებსnull, თუ ობიექტიnullარის, წინააღმდეგ შემთხვევაში ახორციელებს ზარს.// დავუშვათ, user? არის User? val userName: String? = user?.name -
!!არა-null დადასტურების ოპერატორი: მკაფიოდ ადასტურებს, რომ ობიექტი არ არის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` არის არა-null `User` val userName = it.name }
მოდელის არჩევა დამოკიდებულია პროგრამის ლოგიკაზე და იმ ქცევაზე, რომელიც გსურთ, თუ ობიექტი null-ია. ზოგადად, რეკომენდირებულია გამოიყენოთ უსაფრთხო ზარის ოპერატორი (?.) ან ელვის ოპერატორი (?:) NPE-ის თავიდან ასაცილებლად. !! ოპერატორი უნდა გამოიყენოს ფრთხილად.