जावा में ClassCastException को कैसे हल करें?

Java Mem Classcastexception Ko Kaise Hala Karem



जावा में, ' क्लासकास्ट अपवाद 'डेवलपर्स को विकास चरण में उन्हें जल्दी पकड़ने की अनुमति देकर, रनटाइम पर प्रकार संगतता मुद्दों की पहचान करने में मदद करता है। यह कार्यक्रम में विसंगतियों को रोकते हुए, प्रकार की सुरक्षा भी सुनिश्चित करता है। ClassCastException डिबगिंग, परीक्षण, सही प्रकार की कास्टिंग आदि की प्रक्रिया में बहुत मदद करता है।

यह मार्गदर्शिका जावा में ClassCastException को हल करने की प्रक्रिया को दर्शाती है।







जावा में ClassCastException कैसे उत्पन्न होती है?

क्लासकास्ट अपवाद उचित प्रकार की कास्टिंग सुनिश्चित करता है और असंगत प्रकार के रूपांतरणों के कारण होने वाली रनटाइम त्रुटियों को रोकता है। सरल शब्दों में, यह अपवाद तब फेंका जाता है जब किसी ऑब्जेक्ट को असंगत प्रकार में डालने का प्रयास किया जाता है।



उदाहरण के लिए, 'के बारे में नीचे दिए गए कोड पर जाएँ क्लासकास्ट अपवाद जावा में:



आयात java.io.* ;
आयात जावा.लैंग.* ;
आयात java.util.* ;

कक्षा लिनक्ससंकेत {
// ड्राइवर वर्ग का निर्माण
जनता स्थिर खालीपन मुख्य ( डोरी [ ] तर्क )
{
कोशिश {
वस्तु माता-पिता = नया वस्तु ( ) ;

डोरी बच्चा = ( डोरी ) माता-पिता ;
प्रणाली . बाहर . println ( बच्चा ) ;
}
पकड़ना ( अपवाद एफ ) {
प्रणाली . बाहर . println ( एफ ) ;
}
}
}

उपरोक्त कोड की व्याख्या:





  • में ' कोशिश 'ब्लॉक, किसी वस्तु का उदाहरण' माता-पिता ' का उपयोग करके घोषित किया जाता है नया 'कीवर्ड.
  • उसके बाद, टाइपकास्टिंग का उपयोग किया जाता है जिसमें ' वस्तु ' प्रकार को टाइपकास्ट किया जा रहा है और इसका नाम ' है बच्चा ”।
  • यह टाइपकास्टिंग इस नियम का उल्लंघन कर रही है कि मूल वर्ग को उसके चाइल्ड वर्ग में टाइपकास्ट नहीं किया जाना चाहिए। इसीलिए अपवाद उत्पन्न होता है क्योंकि ' वस्तु 'प्रकार एक मूल वर्ग है।
  • अंत में, ' पकड़ना 'ब्लॉक का उपयोग किया जाता है जो लेता है' अपवाद ” एक पैरामीटर के रूप में और कंसोल पर एक संदेश प्रिंट करता है।

निष्पादन चरण की समाप्ति के बाद:



उपरोक्त स्नैपशॉट जावा में ClassCastException की घटना को दर्शाता है।

जावा में ClassCastException को कैसे हल करें?

तीन संभावित समाधानों का उपयोग किया जाता है जिन्हें डेवलपर आसानी से हल कर सकता है या 'बढ़ाने का मौका टाल सकता है' क्लासकास्ट अपवाद 'जावा में.

इन समाधानों का वर्णन नीचे अलग से किया गया है:

समाधान 1: 'इंस्टेंसऑफ़' ऑपरेटर का उपयोग

का उदाहरण 'ऑपरेटर सत्यापित करता है कि क्या' वस्तु 'वांछित प्रकार का एक उदाहरण है या नहीं. यह सत्यापन 'की घटना को रोकने में मदद करता है' क्लासकास्ट अपवाद ”। उदाहरण के लिए, नीचे दिए गए कोड ब्लॉक पर जाएँ:

जनता कक्षा टाइपचेकिंगलिनक्सहिंट {
जनता स्थिर खालीपन मुख्य ( डोरी [ ] तर्क ) {

वस्तु माता-पिता = 'लिनक्सहिंट परिवार' ;
अगर ( माता-पिता का उदाहरण डोरी ) {
डोरी बच्चा = ( डोरी ) माता-पिता ;
प्रणाली . बाहर . println ( 'स्ट्रिंग टाइपकास्टिंग के बाद:' + बच्चा ) ;
} अन्य {
प्रणाली . बाहर . println ( 'ऑब्जेक्ट वांछित प्रकार स्ट्रिंग का एक उदाहरण है।' ) ;
}
}
}

उपरोक्त कोड की व्याख्या:

  • पहले ' माता-पिता 'ऑब्जेक्ट बनाया गया है जिसे' के अंदर एक डमी मान के साथ प्रारंभ किया गया है कोशिश ' अवरोध पैदा करना।
  • फिर, का उपयोग करें 'अगर' बयान जिसमें ' का उदाहरण 'ऑपरेटर का उपयोग' के उदाहरण की जांच करने के लिए किया जाता है माता-पिता ' वांछित के साथ वस्तु ' डोरी ' प्रकार।
  • अगला, यदि स्थिति वापस आती है ' सत्य टाइपकास्टिंग की जाती है और कंसोल पर प्रदर्शित की जाती है।
  • अन्यथा, कस्टम त्रुटि संदेश कंसोल पर प्रदर्शित होता है।

निष्पादन चरण की समाप्ति के बाद:

स्नैपशॉट दिखाता है कि टाइपकास्टिंग सफलतापूर्वक की गई है और क्लासकास्टएक्सेप्शन को 'का उपयोग करके हल किया गया है' का उदाहरण ' ऑपरेटर।

समाधान 2: टाइपकास्टिंग ऑपरेशन की समीक्षा करें और उसे सही करें

एक अन्य समाधान कोड को कई बार जांचना और टाइपकास्टिंग के लिए संगत प्रकारों की समीक्षा करना है। उदाहरण के लिए, नीचे दिए गए कोड पर जाएँ जिसमें “ क्लासकास्ट अपवाद टाइपकास्टिंग के लिए असंगत वांछित प्रकार के कारण गिरफ्तार हो जाता है:

जनता कक्षा चेकलिनक्सहिंट टाइप करें {
जनता स्थिर खालीपन मुख्य ( डोरी [ ] तर्क ) {
वस्तु माता-पिता = 'लिनक्सहिंट परिवार' ;
पूर्णांक परिवर्तित संख्या = ( पूर्णांक ) माता-पिता ;
प्रणाली . बाहर . println ( 'टाइपकास्टिंग के बाद नंबर:' + परिवर्तित संख्या ) ;
}
}

उपरोक्त कोड में, प्रोग्रामर ने गलत तरीके से 'डाल दिया' डोरी ' को ' पूर्णांक ”।

संकलन चरण की समाप्ति के बाद:

उपरोक्त स्नैपशॉट ClassCastException की घटना को दर्शाता है।

समाधान 3: जेनरिक का उपयोग

प्रोग्रामर 'का उपयोग कर सकते हैं जेनरिक 'अपेक्षित प्रकारों को निर्दिष्ट करने और संकलन समय पर प्रकार की सुरक्षा लागू करने के लिए।

उदाहरण के लिए, नीचे दिए गए कोड पर जाएँ:

आयात java.util.ArrayList ;
आयात java.util.सूची ;

जनता कक्षा जेनेरिक्स का उपयोग करना {
जनता स्थिर खालीपन मुख्य ( डोरी [ ] तर्क ) {
सूची < डोरी > empName = नया सारणी सूची <> ( ) ;
empName. जोड़ना ( 'हैरी' ) ;
empName. जोड़ना ( 'कुम्हार' ) ;

डोरी प्रारंभिक = empName. पाना ( 0 ) ;
डोरी अंतिम = empName. पाना ( 1 ) ;

प्रणाली . बाहर . println ( 'पहला नाम: ' + प्रारंभिक ) ;
प्रणाली . बाहर . println ( 'दूसरा नाम: ' + अंतिम ) ;
}
}

उपरोक्त कोड की व्याख्या:

  • सबसे पहले, आवश्यक उपयोगिताओं को जावा फ़ाइल में आयात किया जाता है, और ' जेनेरिक्स का उपयोग करना ” घोषित किया गया है.
  • अगला, ' सारणी सूची 'प्रकार का' डोरी 'नाम से घोषित किया गया है' empName ” और दो डमी डेटा तत्व प्रदान करके आरंभ किया गया।
  • फिर, दो स्ट्रिंग-प्रकार वेरिएबल बनाएं जिनका नाम ' प्रारंभिक ' और ' अंतिम ”। उसके बाद, सूचकांक संख्याओं तक पहुंच कर मान निर्दिष्ट करें।
  • अंत में, परिणाम देखने के लिए दोनों चर प्रदर्शित करें।

निष्पादन की समाप्ति के बाद, आउटपुट इस तरह दिखता है:

उपरोक्त स्नैपशॉट दर्शाता है कि जेनेरिक का उपयोग करके टाइपकास्टिंग की गई है।

निष्कर्ष

को हल करने के लिए ' क्लासकास्ट अपवाद 'जावा में, प्रोग्रामर को उचित प्रकार की अनुकूलता सुनिश्चित करनी चाहिए, ' का उपयोग जेनरिक ' और यह ' का उदाहरण ' ऑपरेटर। अपवाद को हल करने के लिए, प्रोग्रामर को उचित प्रकार की अनुकूलता सुनिश्चित करके कास्टिंग ऑपरेशन की समीक्षा और सही करना होगा। इसके अलावा, यह ' क्लासकास्ट अपवाद 'का प्रयोग करके इससे बचा जा सकता है' जेनरिक 'और' के उपयोग के साथ का उदाहरण ' ऑपरेटर। इस गाइड ने जावा में ClassCastException को हल करने की विधि का प्रदर्शन किया है।