Loading...

Kotlin in Hindi – Null Safety

  • Introduction to kotlin null safety in Hindi
  • Kotlin references in Hindi
  • Kotlin safe call references in Hindi

Introduction to Kotlin Null Safety

Kotlin को null safety को ध्यान में रखते हुए design किया गया है। Kotlin compile time पर ही null reference को detect कर लेती है और या कोई ऐसा reference नहीं देने देती है जो की null है।

Java में null safety के लिए कोई कार्य प्रणाली उपलब्ध नहीं है। इसका नतीजा यह होता है की कई बार जब programmer unintentionally null से किसी function आदि को refer कर देता है तो null pointer exception generate हो जाती है और application crash हो जाती है।

Null safety इतनी महत्वपूर्ण है की यदि इस पर ध्यान ना दिया जाये तो इसकी वजह से बहुत अधिक नुक्सान हो सकता है। पहले भी कई organizations ने इस exception की वजह से बहुत नुक्सान उठाया है।

Kotlin द्वारा compile time पर null safety provide की जाती है। उदाहरण के लिए आप एक variable में null value नहीं store कर सकते है।

val x: String = “Best Hindi Tutorials”

 

x = null   // Compilation error 

ऊपर दिए गए code में x variable को null value assign की गयी है। यह declaration एक error generate करता है। यँहा पर x एक non nullable string type का variable है। यानी की x को compile time या run time कभी भी null value नहीं assign की जा सकती है।

ऐसी situation में यदि आप किसी variable को null value assign करना चाहते है तो इसके लिए आपको उसे nullable type का declare करना होगा। जैसा की आपको पता हर type का एक nullable version already kotlin में available है जो की ? से postfixed होता है।

val y: String? = “Best Hindi Tutorials”

 

y = null  // No error

ऊपर दिए गए code में y एक nullable string type का variable है। इसे null value assign की जा सकती है।

Kotlin References

Kotlin में दो प्रकार के references देखने को मिलते है। ये references nullable और non nullable होने से different होते है।

Non null reference 

ऊपर पहले उदाहरण में Non nullable string type का x variable create किया गया था। यदि इस variable द्वारा आप string objects के साथ available length property call करते है तो NullPointerException generate नहीं होगी क्योंकि run time पर भी x को null value assign नहीं की जा सकती है।

val x:String = “Best Hindi Tutorials”
print(x.length)  // Will not cause any exception

Nullable References

ऊपर दूसरे उदाहरण में nullable string type का y variable create किया गया था। यदि nullable type के variable से कोई property या function access किये जाते है तो वह safe नहीं होता है। ऐसे में compiler भी एक error (Only safe calls are allowed) generate करता है।

val y: String? = “Best Hindi Tutorials”
print(x.length) // Compiler generates error

लेकिन कई बार आपको nullable type के variables से भी property या functions को call करना जरुरी हो सकता है। ऐसे में kotlin आपको कई तरीके provide करती है जिनसे आप यह कार्य कर सकते है।

Checking For Null in Conditions

एक nullable type के object से refer करने के लिए आप पहले तरीके के रूप में null condition के लिए check कर सकते है। इस तरीके में आप दोनों conditions (null होने की और null नहीं होने की) के लिए अलग अलग code provide कर सकते है। 

if(y!=null)
{
   print(y.length)
}
else
{
   print(“null”)
}

आपके द्वारा perform किये जाने वाले condition check को compiler track करता है और if block के अंदर length property call को allow कर देता है।

एक बात आपको ध्यान रखनी चाहिए की ऐसा सिर्फ immutable objects के साथ ही होता है।

Kotlin Safe Call Operator (?.)

एक nullable type के object से किसी property को या function को safe तरीके से call करने के लिए kotlin आपको safe call operator (?.) provide करती है।

val z: String? = null
print(z?.length)

जैसा की आप ऊपर दिए गए code में देख सकते है, z variable में null value store की गयी है। इसके बाद safe call operator के द्वारा z से length property को call किया गया है। Safe call operator के साथ call करने की वजह से कोई exception generate नहीं होगी फिर चाहे object की value null हो या ना हो।

Safe call operators chains के लिए बहुत उपयोगी होते है। एक chain की सभी values को null के लिए check किया जाता है यदि chain में कोई भी object null है तो पूरी chain का result भी null होगा और यदि कोई भी object null नहीं है तो appropriate result प्राप्त होगा।

Elvis Operator (?:)

एक nullable reference में यदि null value होती है तो यह आवश्यक नहीं है की null value ही use की जाए। आप चाहे तो उसकी जगह कोई एक निश्चित value भी use कर सकते है।

ऐसा करने के लिए आप elvis operator उपयोग करते है। इस operator के left side में दिया गया expression यदि null नहीं है तो वही value उपयोग की जाएगी नहीं तो इस operator के right side में दी गयी value उपयोग की जाएगी।

val z: String? = null
print(z?.length ?: -1)

ऊपर दिए गए code में z को null assign किया गया है। लेकिन elvis operator की मदद से null की बजाय z की length को -1 print किया गया है।

Not-null Assertion Operator (!!)

Casting के लिए kotlin आपको एक और उपयोगी operator provide करती है। यह operator एक value को non null type में convert करता है और यदि value null होती है तो exception generate होती है। 

val z: String? = null
print(z!!.length)

ऊपर दिए गए code में क्योंकि z को null value assign की गयी है इसलिये second line के execute होने पर NullPointerException generate होगी।

Safe casting के बारे में विस्तृत जानकारी के लिए आप kotlin type checking and casting tutorial पढ़ सकते है।

Previous: Kotlin Type Checking and Casting
Next: Kotlin Destructuring Declarations