2017-05-07 5 views
33

कोटलिन में एक विस्मयादिबोधक चिह्न का क्या अर्थ है? मैंने जावा एपीआई का उपयोग करते समय इसे कुछ बार देखा है। लेकिन मैं इसे दस्तावेज़ीकरण में नहीं मिला और न ही स्टैक ओवरफ्लो पर।कोटलिन में एकल विस्मयादिबोधक चिह्न

उत्तर

43

उन्हें platform types कहा जाता है और उनका मतलब है कि कोटलिन को यह नहीं पता कि यह मान null हो सकता है या नहीं और यह तय करने के लिए आप पर निर्भर है कि यह शून्य है या नहीं।

संक्षेप में, समस्या किसी भी संदर्भ जावा से आ रही अशक्त हो सकता है, और Kotlin, डिजाइन द्वारा अशक्त-सुरक्षित किया जा रहा है, करने के लिए उपयोगकर्ता के लिए मजबूर हर जावा मान शून्य से जाँच करें, या सुरक्षित कॉल का उपयोग है (?.) या गैर-शून्य दावे (!!)। शुद्ध कोटलिन दुनिया में बहुत ही आसान विशेषताएं होने पर, आप कोटलिन/जावा सेटिंग में अक्सर उपयोग करने के दौरान आपदा में बदल जाते हैं।

यही कारण है कि हम एक कट्टरपंथी दृष्टिकोण लिया और Kotlin के प्रकार प्रणाली अधिक आराम जब जावा इंटरॉप के लिए आता है बनाया: अब जावा से आ रही संदर्भ विशेष रूप से चिह्नित किया है प्रकार - Kotlin Blog

1

एक प्रकार ! साथ notated मंच कहा जाता है टाइप करें, जो कि जावा से आ रहा है और इस प्रकार शायद null हो सकता है। जावा को कॉल करते समय कोटलिन कंपाइलर डिफ़ॉल्ट रूप से अनुमान लगाता है (सबसे बुनियादी मामलों के लिए, जावा विधियां annotated हो सकती हैं)। आपको प्लेटफ़ॉर्म प्रकारों को नालीबल प्रकारों के रूप में संभालना चाहिए, जब तक आप निश्चित रूप से नहीं जानते कि विशेष API कभी भी null वापस नहीं करेगा। कंपाइलर प्लेटफार्म प्रकारों को शून्य और गैर-शून्य प्रकारों के चर के लिए आवंटित करने की अनुमति देता है।

Notation for Platform Types

[...]

T! का अर्थ है "T or T?" [...]

आप "के रूप में अज्ञात के प्रकार मंच प्रकार की जानकारी दे सकती शून्यता "। यह जानना भी महत्वपूर्ण है कि आप अपने स्वयं के प्रकार के लिए विस्मयादिबोधक-प्रकार के प्रकार का उपयोग नहीं कर सकते हैं, यह कोटलिन सिंटैक्स का हिस्सा नहीं है, यह केवल एक संकेत है।

संबंधित मुद्दे