क्यों AsstanceOf क्लासकास्ट अपवाद नहीं फेंकता है?क्यों AsstanceOf क्लासकास्ट अपवाद नहीं फेंकता है?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
क्यों AsstanceOf क्लासकास्ट अपवाद नहीं फेंकता है?क्यों AsstanceOf क्लासकास्ट अपवाद नहीं फेंकता है?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
:
नोट जो रनटाइम के दौरान एक डाली की सफलता सापेक्ष स्काला का विलोपन अर्थ विज्ञान है। इसलिए अभिव्यक्ति 1.asInstanceOf [स्ट्रिंग] रनटाइम पर क्लासकास्ट अपवाद फेंक देगा, जबकि अभिव्यक्ति सूची (1) .asInstanceOf [सूची [स्ट्रिंग]] नहीं होगा। बाद के उदाहरण में, क्योंकि संकलन के हिस्से के रूप में टाइप तर्क मिटा दिया गया है, यह जांचना संभव नहीं है कि सूची की सामग्री अनुरोधित प्रकार के हैं या नहीं।
आप चर का उपयोग या रूपांतरण यह correclty एक अपवाद फेंकता मैप करने के लिए कोशिश करते हैं:
scala> List("a").asInstanceOf[List[Int]]
res0: List[Int] = List(a)
scala> res0
res1: List[Int] = List(a)
scala> res0(0)
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
List("a").map(_.asInstanceOf[Int])
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
इस दिलचस्प है – tuxdna