Kotlin in Hindi : Type Checking and Casting

  • Introduction to kotlin type checking in Hindi
  • Kotlin smart casts in Hindi 
  • Kotlin explicit casting in Hindi

Introduction to Kotlin Type Checking

कई popular programming languages type checking और casting के लिए functionalities provide करती है। Kotlin में भी यह feature उपलब्ध है।

Type of Object 

कई बार जब आप mixed types के साथ कार्य करते है तो run time पर यह जानना आवश्यक हो जाता है की एक object किस type (class) का है।

उदाहरण के लिए आप objectA का reference objectB को runtime पर assign करवा रहे है। ऐसे में पहले आपको यह check करना आवश्यक है की दोनों same type (class) के object है या नहीं। क्योंकि यदि दोनों object same type के नहीं है तो ऐसा नहीं किया जा सकता है।

is Operator 

इस कार्य के लिए kotlin आपको is operator provide करती है। इस operator के द्वारा आप compile time पर यह पता कर सकते है की एक object किस type का है।

val Message: String = “Hello reader!”

if(msg is String)
{
   print(“Message is a string object”)
}

ऊपर दिए गए code में Message एक string object है। If statement में is operator के माध्यम से यह confirm किया गया है।

Negated Form (!is)

Kotlin में is operator की एक negation form भी है। यह form negated सन्दर्भ में उपयोग की जाती है। 

val Message: String = “Hello reader!”

if(Message !is String)
{
   print(“Message is not string.”)
}

Kotlin Type Casting

जब आप किसी एक type के variable की value को किसी दूसरे type के variable को assign करना चाहते है तो ऐसा आप directly नहीं कर सकते है। इसके लिए पहले आपको उस value को cast करने की आवश्यकता होती है ताकि वह दूसरे type में store की जा सके।

Java में compatible types को आपस में cast करने के लिए cast () operator का प्रयोग किया जाता है। उदाहरण के लिए आप एक integer variable की value को string variable को assign करना चाहते है तो इसके लिए पहले आपको integer value को string में cast करना होगा।

int num = 5;
String value = (String) num;

ऊपर दिए गए code में num variable की value को string में cast करके string variable को assign किया गया है।

Kotlin Smart Casting 

Java के तरीके से हटकर kotlin आपको एक special type की casting ability provide करती है। जिसे kotlin में smart casting कहा जाता है।

Kotlin में is operator का type check करने के अलावा एक काम और भी है। जब आप किसी type को is operator द्वारा check करते है तो वह automatically उस type में cast हो जाता है।

उदाहरण के लिए निचे दिया code देखिये।

fun main(args: Array<String>)
{

val obj: Any = “Best Hindi Tutorials”;

if(obj is String)
{
    print(obj.length)
}

}

ऊपर दिए गए code में Any type के object को is operator द्वारा automatically string में cast किया गया है। यदि object cast नहीं किया गया होता तो उसके साथ length property का प्रयोग किया जाना संभव नहीं था।

Smart Casting Rules

Kotlin में smart casting सभी types के साथ possible नहीं है। यह केवल compiler द्वारा automatically तब ही perform की जाती है जब compiler को लगता है की casting और उसका उपयोग संभव है। निचे कुछ elements बताये जा रहे जिनके साथ smart casting संभव है 

  • val local variables – Val local variables के साथ smart casting हमेशा संभव है। लेकिन local delegated properties के साथ ऐसा नहीं किया जा सकता है। 
  • val properties – यदि property private या internal है और जँहा property को declare किया गया है वँही पर check perform किया गया है तो smart casting संभव है। Open properties या ऐसी properties जिनका custom getter declare किया गया है उनके साथ smart casting सम्भव नहीं है। 
  • var local variables – यदि variable check करने और use करने के बीच modify नहीं किया गया है, यदि उसे किसी lambda द्वारा नहीं catch किया गया है जो उसे modify नहीं करता है और यदि variable local delegated property नहीं है। 
  • var properties – Var properties के साथ smart casting possible नहीं है। 

Kotlin Explicit Casting

Kotlin में is operator द्वारा की गयी casting automatic होती है। लेकिन जैसा की आपको पता है इस प्रकार की casting हर संदर्भ में संभव नहीं होती है।

ऐसे में casting explicitly (manually) cast operator द्वारा perform की जाती है। Cast operator का concept कई programming languages में है लेकिन kotlin में cast operator अलग है।

Cast Operator as (Unsafe)

Kotlin आपको as cast operator provide करती है जो casting perform करने के लिए use किया जाता है। Compatible types के बीच casting आसानी से हो जाती है। यदि  types के बीच casting संभव नहीं होती है तो ClassCastException generate होती है। यही कारण है की इस operator को unsafe cast operator भी कहा जाता है।

val obj: Any = 555
val myValue: String = obj as String // Generates exception

ऊपर दिए गए उदाहरण में integer object को as operator द्वारा string में cast करने का प्रयास किया गया है।  यह code exception generate करता है क्योंकि integer को string में नहीं cast किया जा सकता है।

Cast Operator as? (Safe)

Kotlin में as operator की एक form as? है जो की as से safe casting perform करने के लिए प्रयोग की जाती है। यह operator compatible types के साथ आसानी से casting perform कर देता है और यदि दो types के बीच casting संभव नहीं होती है तो exception generate करने की बजाय यह operator null return करता है।

val obj: Any = 555
val myValue: String = obj as? String

print(myValue)   // It will print null

Previous: Kotlin Exceptions
Next: Kotlin Null Safety