जावा में स्पष्ट कास्टिंग और क्लासकास्ट अपवाद को समझना
जावा में, हम एक सुपरक्लास ऑब्जेक्ट को उपवर्ग चर में निर्दिष्ट करने के लिए स्पष्ट कास्टिंग का उपयोग कर सकते हैं। उदाहरण के लिए, निम्नलिखित कोड पर विचार करें:
public class Animal { public void eat() {} } public class Dog extends Animal { public void eat() {} public static void main(String[] args) { Animal animal = new Animal(); Dog dog = (Dog) animal; } }
यद्यपि कोड सफलतापूर्वक संकलित हो जाता है, कुत्ता कुत्ता = (कुत्ता) जानवर; रनटाइम पर एक ClassCastException फेंकता है। जब आप किसी ऑब्जेक्ट को सुपरक्लास से सबक्लास में डालते हैं, तो आप अनिवार्य रूप से कंपाइलर को यह भरोसा करने का निर्देश दे रहे हैं कि ऑब्जेक्ट वास्तव में उपक्लास का एक उदाहरण है।
हमारे उदाहरण में, परिवर्तनीय जानवर एनिमल का एक उदाहरण है कक्षा। हालाँकि, इसे डॉग ऑब्जेक्ट पर कास्ट करने से यह मान लिया जाता है कि जानवर डॉग ऑब्जेक्ट का संदर्भ दे रहा है, जो कि मामला नहीं है। इसलिए, JVM रनटाइम पर इस धारणा को मान्य करता है और विफल होने पर ClassCastException को फेंक देता है।
हम ऐसी त्रुटियों को कैसे रोक सकते हैं?सुरक्षित कास्टिंग करने के लिए, हमें यह करना चाहिए निम्नलिखित जाँचें करें:
पुष्टि करें कि ऑब्जेक्ट अपेक्षित उपप्रकार का एक उदाहरण है:
उपयोग करें इंस्टेंसऑफ़ ऑपरेटर यह सत्यापित करने के लिए कि ऑब्जेक्ट को वांछित उपवर्ग को सौंपा जा सकता है। ]संक्षेप में, स्पष्ट कास्टिंग हमें कंपाइलर की टाइप-चेकिंग को ओवरराइड करने की अनुमति देती है, लेकिन इसे सावधानी से करना आवश्यक है और उस पर भरोसा करने से पहले कास्ट की वैधता सत्यापित करें।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3