Avatar ·

Kotlin में out कीवर्ड का क्या अर्थ है और इसे जेनेरिक के साथ कैसे उपयोग करें?

नमस्ते! मैं Java के बाद Kotlin सीखना शुरू किया और एक ऐसी संरचना देखी जो मेरे लिए समझ से बाहर है। Java में मैं `? extends T` और `? super T` जैसे wildcard वाले जेनेरिक का आदी हूँ। लेकिन Kotlin में मैं क्लास घोषणा में ही `in` और `out` कीवर्ड देखता हूँ। उदाहरण के लिए, मुझे यह कोड मिला: ```kotlin interface Source { fun get(): T } ``` `T` से पहले `out` का क्या मतलब है? मैंने बिना `out` के अपनी क्लास लिखने की कोशिश की: ```kotlin class Box(private val item: T) { fun get(): T = item fun set(newItem: T) { /* ... */ } } ``` और यह काम करता है। लेकिन अगर मैं `out` जोड़ता हूँ, तो कंपाइलर `set` मेथड पर त्रुटि देता है। क्यों? और आखिर `out` की आवश्यकता क्यों है? इसे किन स्थितियों में उपयोग करना चाहिए? यह Java के PECS सिद्धांत (Producer Extends, Consumer Super) से कैसे संबंधित है? कृपया समझाएँ।