Kotlin में reified कीवर्ड कैसे काम करता है और इसकी आवश्यकता क्यों है?
जेनेरिक्स में type erasure की समस्या
जब आप Kotlin में जेनेरिक फ़ंक्शन लिखते हैं, तो कंपाइलर रनटाइम पर प्रकार की जानकारी मिटा देता है (type erasure)। इसलिए `it is T` जैसी जाँच काम नहीं करती, क्योंकि T का प्रकार रनटाइम पर उपलब्ध नहीं होता।
reified का उपयोग कैसे करें
`reified` कीवर्ड का उपयोग inline फ़ंक्शन के साथ किया जाता है। यह कंपाइलर को बताता है कि T के प्रकार की जानकारी को रनटाइम पर संरक्षित रखा जाए। उदाहरण:
inline fun countElements(list: List): Int {
return list.filter { it is T }.count()
}
अब आप इसे इस तरह कॉल कर सकते हैं: countElements या countElements।
reified की सीमाएँ
`reified` केवल inline फ़ंक्शन में काम करता है। इसे non-inline फ़ंक्शन, क्लास प्रॉपर्टी, या non-reified type parameters के साथ उपयोग नहीं किया जा सकता। साथ ही, यह JVM पर रिफ्लेक्शन का उपयोग करता है, जो प्रदर्शन को थोड़ा प्रभावित कर सकता है।