Kotlin, स्थिर रूप से टाइप किया गया होने के कारण, अधिकांश प्रकार की जाँच संकलन के दौरान करता है। हालाँकि, ऐसी स्थितियाँ उत्पन्न होती हैं जहाँ गतिशील व्यवहार या मज़बूत त्रुटि संचालन के लिए रनटाइम प्रकार की जाँच आवश्यक होती है। यह लेख रनटाइम पर Kotlin चर के प्रकार का निर्धारण करने के दो प्रभावी तरीकों का पता लगाता है।
विषय-सूची
is
कीवर्ड का उपयोग करना
is
कीवर्ड रनटाइम प्रकार की जाँच के लिए सबसे सरल और कुशल तरीका प्रदान करता है। यदि चर निर्दिष्ट प्रकार या उप-प्रकार का है, तो यह true
देता है, अन्यथा false
। यह चर के प्रकार के आधार पर सशर्त तर्क की सुविधा प्रदान करता है।
fun checkTypeWithIs(variable: Any) {
when (variable) {
is String -> println("चर एक String है: $variable")
is Int -> println("चर एक Int है: $variable")
is Double -> println("चर एक Double है: $variable")
else -> println("चर एक अज्ञात प्रकार का है: ${variable?.javaClass?.name ?: "null"}")
}
}
fun main() {
val myString = "Hello, Kotlin!"
val myInt = 10
val myDouble = 3.14
val myNull: String? = null
checkTypeWithIs(myString) // आउटपुट: चर एक String है: Hello, Kotlin!
checkTypeWithIs(myInt) // आउटपुट: चर एक Int है: 10
checkTypeWithIs(myDouble) // आउटपुट: चर एक Double है: 3.14
checkTypeWithIs(myNull) // आउटपुट: चर एक अज्ञात प्रकार का है: null
}
यह बेहतर उदाहरण क्लीनर कोड के लिए when
अभिव्यक्ति का उपयोग करता है और null
मानों को सुचारू रूप से संभालता है। महत्वपूर्ण रूप से, Kotlin के स्मार्ट कास्ट when
शाखाओं के भीतर स्पष्ट कास्टिंग की आवश्यकता को समाप्त करते हैं। एक सफल is
जांच के बाद, चर को स्वचालित रूप से जाँचे गए प्रकार के रूप में माना जाता है।
qualifiedName
गुण का उपयोग करना
यह विधि एक अधिक प्रोग्रामेटिक दृष्टिकोण प्रदान करती है, जो आदर्श है जब आपको एक स्ट्रिंग के रूप में प्रकार के नाम की आवश्यकता होती है। यह ::class
गुण और परिणामी KClass
उदाहरण के qualifiedName
गुण का उपयोग करता है।
fun checkTypeWithQualifiedName(variable: Any) {
val typeName = variable::class.qualifiedName ?: "Unknown Type"
println("चर का प्रकार है: $typeName")
}
fun main() {
val myString = "Hello, Kotlin!"
val myInt = 10
val myList = listOf(1, 2, 3)
val myNull: String? = null
checkTypeWithQualifiedName(myString) // आउटपुट: चर का प्रकार है: kotlin.String
checkTypeWithQualifiedName(myInt) // आउटपुट: चर का प्रकार है: kotlin.Int
checkTypeWithQualifiedName(myList) // आउटपुट: चर का प्रकार है: kotlin.collections.List
checkTypeWithQualifiedName(myNull) // आउटपुट: चर का प्रकार है: kotlin.String
}
इस संशोधित उदाहरण में संभावित शून्य मानों को अधिक मज़बूती से संभालने के लिए एल्विस ऑपरेटर (?:) का उपयोग करके शून्य सुरक्षा शामिल है। पूर्ण योग्य नाम लौटाया जाता है, जो लॉगिंग, डीबगिंग या स्ट्रिंग प्रतिनिधित्व के आधार पर गतिशील प्रकार के संचालन के लिए उपयोगी है। हालाँकि, साधारण प्रकार की जाँच के लिए, is
कीवर्ड अधिक कुशल रहता है।
संक्षेप में, दोनों विधियाँ रनटाइम पर किसी चर के प्रकार का निर्धारण करने के मूल्यवान तरीके प्रदान करती हैं। is
कीवर्ड सशर्त तर्क में उत्कृष्टता प्राप्त करता है, जबकि qualifiedName
प्रोग्रामेटिक परिदृश्यों में चमकता है जिसमें स्ट्रिंग के रूप में प्रकार के नाम की आवश्यकता होती है। सही विधि का चयन आपके एप्लिकेशन की विशिष्ट आवश्यकताओं पर निर्भर करता है।