जवाबों:
यह असुरक्षित अशक्त प्रकार ( T?) एक गैर- अशक्त प्रकार ( ) में रूपांतरण है T,
मान होने पर !!फेंक देगा ।NullPointerExceptionnull
इसे यहां कोटलिन-सुरक्षा के कोटलिन माध्यमों के साथ प्रलेखित किया गया है ।
sale.latestइसमें शामिल हो सकते हैं null; असाइनमेंट तभी सफल होगा जब sale.latestवह अशक्त न हो और अन्यथा एनपीई को फेंक देगा। यह अशक्त-सुरक्षा देता है val price: इसका प्रकार गैर-अशक्त होगा। देखें kotlinlang.org/docs/reference/null-safety.html
!!आप तेजी से विफल हो सकते हैं और एनपीई के मूल कारण का पता लगा सकते हैं। काश जावा में भी ऐसी ही विशेषता होती (यानी w / o बदसूरत ifबयान और / या assertआयन)।
यहां चीजों को स्पष्ट करने के लिए एक उदाहरण दिया गया है। कहते हैं कि आपका यह कार्य है
fun main(args: Array<String>) {
var email: String
email = null
println(email)
}
यह निम्नलिखित संकलन त्रुटि उत्पन्न करेगा।
Null can not be a value of a non-null type String
अब आप Stringइसे अशोभनीय बनाने के लिए प्रश्नवाचक चिन्ह जोड़कर इसे रोक सकते हैं ।
तो हमारे पास
fun main(args: Array<String>) {
var email: String?
email = null
println(email)
}
इसका एक परिणाम होता है
null
अब अगर हम चाहते हैं कि ईमेल के मूल्य शून्य होने पर फ़ंक्शन अपवाद को छोड़ दे, तो हम ईमेल के अंत में दो विस्मयादिबोधक जोड़ सकते हैं। ऐशे ही
fun main(args: Array<String>) {
var email: String?
email = null
println(email!!)
}
यह एक फेंक देगा KotlinNullPointerException
डबल-बैंग ऑपरेटरNullPointerException (या संक्षेप के लिए एनपीई) के प्रशंसकों के लिए एक उत्कृष्ट विकल्प है ।
नहीं-अशक्त अभिकथन ऑपरेटर
!!एक के लिए किसी भी मूल्य धर्मान्तरित में गैर-शून्य प्रकार और एक अपवाद फेंकता है तो मान शून्य है।
val nonNull = a!!.length
तो आप लिख सकते हैं a!!, और यह a( Stringउदाहरण के लिए यहां) का एक गैर-शून्य मान लौटाएगा या aशून्य होने पर एक एनपीई फेंक देगा ।
यदि आप एक एनपीई चाहते हैं, तो आपके पास यह हो सकता है, लेकिन आपको इसके लिए स्पष्ट रूप से पूछना होगा। इस ऑपरेटर का उपयोग उन मामलों में किया जाना चाहिए जहां डेवलपर गारंटी दे रहा है - मूल्य कभी भी शून्य नहीं होगा ।
!!एक बयान के अंत में यह क्या मतलब है? IJ ऑटो-कन्वर्टval price = sale.latest!!