جاوا میں ClassCastException کو کیسے حل کریں؟

Jawa My Classcastexception Kw Kys Hl Kry



جاوا میں، ' ClassCastException ” رن ٹائم کے وقت قسم کی مطابقت کے مسائل کی نشاندہی کرنے میں مدد کرتا ہے، جس سے ڈویلپرز کو انہیں ترقی کے مرحلے میں ابتدائی طور پر پکڑنے کی اجازت دیتا ہے۔ یہ قسم کی حفاظت کو بھی یقینی بناتا ہے، پروگرام میں تضادات کو روکتا ہے۔ ClassCastException ڈیبگنگ، ٹیسٹنگ، درست قسم کاسٹنگ وغیرہ کے عمل میں بہت مدد کرتا ہے۔

یہ گائیڈ جاوا میں ClassCastException کو حل کرنے کے طریقہ کار کو ظاہر کرتا ہے۔







جاوا میں ClassCastException کیسے پیدا ہوتا ہے؟

' ClassCastException ” مناسب قسم کی کاسٹنگ کو یقینی بناتا ہے اور غیر مطابقت پذیر قسم کے تبادلوں کی وجہ سے رن ٹائم کی خرابیوں کو روکتا ہے۔ سادہ الفاظ میں، یہ رعایت اس وقت ڈالی جاتی ہے جب کسی چیز کو غیر مطابقت پذیر قسم میں ڈالنے کی کوشش کی جاتی ہے۔



مثال کے طور پر، 'کے بارے میں نیچے کا کوڈ دیکھیں ClassCastException 'جاوا میں:



درآمد java.io* ;
درآمد java.lang.* ;
درآمد java.util.* ;

کلاس لینکس کا اشارہ {
// ڈرائیور کلاس کی تخلیق
عوام جامد باطل مرکزی ( تار [ ] args )
{
کوشش کریں {
چیز والدین = نئی چیز ( ) ;

تار بچہ = ( تار ) والدین ;
سسٹم . باہر . پرنٹ ایل این ( بچہ ) ;
}
پکڑنا ( رعایت f ) {
سسٹم . باہر . پرنٹ ایل این ( f ) ;
}
}
}

مندرجہ بالا کوڈ کی وضاحت:





  • میں ' کوشش کریں 'بلاک، کسی چیز کی مثال' والدین 'کا استعمال کرتے ہوئے اعلان کیا جاتا ہے' نئی 'کلیدی لفظ.
  • اس کے بعد، ٹائپ کاسٹنگ کا استعمال کیا جاتا ہے جس میں ' چیز ' ٹائپ ٹائپ کاسٹ کیا جا رہا ہے اور اس کا نام ہے ' بچہ '
  • یہ ٹائپ کاسٹنگ اس اصول کی خلاف ورزی کر رہی ہے کہ پیرنٹ کلاس کو اس کی چائلڈ کلاس میں ٹائپ کاسٹ نہیں کرنا چاہیے۔ اسی لیے استثناء پیدا ہوتا ہے کیونکہ ' چیز قسم ایک پیرنٹ کلاس ہے۔
  • آخر میں، ' پکڑنا 'بلاک استعمال کیا جاتا ہے جو لیتا ہے' رعایت ” بطور پیرامیٹر اور کنسول پر ایک پیغام پرنٹ کرتا ہے۔

پھانسی کے مرحلے کے اختتام کے بعد:



مندرجہ بالا سنیپ شاٹ جاوا میں ClassCastException کی موجودگی کو ظاہر کرتا ہے۔

جاوا میں ClassCastException کو کیسے حل کریں؟

تین ممکنہ حل استعمال کیے گئے ہیں جنہیں ڈویلپر آسانی سے حل کر سکتا ہے یا اس کو بڑھانے کے موقع سے بچ سکتا ہے۔ ClassCastException 'جاوا میں۔

یہ حل ذیل میں الگ الگ بیان کیے گئے ہیں:

حل 1: 'instanceof' آپریٹر کا استعمال

' کی مثال 'آپریٹر تصدیق کرتا ہے اگر ' چیز ' مطلوبہ قسم کی ایک مثال ہے یا نہیں۔ اس تصدیق سے 'کی موجودگی کو روکنے میں مدد ملتی ہے ClassCastException ' مثال کے طور پر، ذیل میں کوڈ بلاک ملاحظہ کریں:

عوام کلاس TypeCheckingLinuxHint {
عوام جامد باطل مرکزی ( تار [ ] args ) {

چیز والدین = 'لینکس ہنٹ فیملی' ;
اگر ( والدین کی مثال تار ) {
تار بچہ = ( تار ) والدین ;
سسٹم . باہر . پرنٹ ایل این ( 'اسٹرنگ ٹائپ کاسٹ کرنے کے بعد:' + بچہ ) ;
} اور {
سسٹم . باہر . پرنٹ ایل این ( 'آبجیکٹ مطلوبہ قسم کی String کی ایک مثال ہے۔' ) ;
}
}
}

مندرجہ بالا کوڈ کی وضاحت:

  • سب سے پہلے، ' والدین 'آبجیکٹ بنایا گیا ہے جس کی شروعات ایک ڈمی ویلیو کے ساتھ کی گئی ہے' کوشش کریں 'بلاک.
  • پھر، استعمال کریں 'اگر' بیان جس میں ' کی مثال 'آپریٹر' کی مثال کو چیک کرنے کے لیے استعمال کیا جاتا ہے والدین 'مطلوبہ چیز' تار 'قسم.
  • اگلا، اگر حالت واپس آتی ہے ' سچ ہے ٹائپ کاسٹنگ کی جاتی ہے اور کنسول پر ظاہر ہوتی ہے۔
  • بصورت دیگر، کسٹم ایرر میسج کنسول پر ظاہر ہوتا ہے۔

پھانسی کے مرحلے کے اختتام کے بعد:

اسنیپ شاٹ سے پتہ چلتا ہے کہ ٹائپ کاسٹنگ کامیابی سے ہو گئی ہے اور ClassCastException کو ' کی مثال 'آپریٹر.

حل 2: ٹائپ کاسٹنگ آپریشن کا جائزہ لیں اور درست کریں۔

دوسرا حل یہ ہے کہ کوڈ کو متعدد بار چیک کریں اور ٹائپ کاسٹنگ کے لیے مطابقت پذیر اقسام کا جائزہ لیں۔ مثال کے طور پر، نیچے دیے گئے کوڈ پر جائیں جس میں ' ClassCastException ٹائپ کاسٹنگ کے لیے ایک غیر موافق مطلوبہ قسم کی وجہ سے گرفتار ہو جاتا ہے:

عوام کلاس TypeCheckLinuxHint {
عوام جامد باطل مرکزی ( تار [ ] args ) {
چیز والدین = 'لینکس ہنٹ فیملی' ;
عدد تبدیل شدہ نمبر = ( عدد ) والدین ;
سسٹم . باہر . پرنٹ ایل این ( 'ٹائپ کاسٹ کرنے کے بعد نمبر:' + تبدیل شدہ نمبر ) ;
}
}

مندرجہ بالا کوڈ میں، پروگرامر نے غلط طریقے سے ' تار 'سے' عدد '

تالیف کے مرحلے کے اختتام کے بعد:

مندرجہ بالا سنیپ شاٹ ClassCastException کی موجودگی کو ظاہر کرتا ہے۔

حل 3: جنرک کا استعمال

پروگرامرز استعمال کر سکتے ہیں ' عام متوقع اقسام کی وضاحت کرنے اور تالیف کے وقت قسم کی حفاظت کو نافذ کرنے کے لیے۔

مثال کے طور پر، درج ذیل کوڈ پر جائیں:

درآمد java.util.ArrayList ;
درآمد java.util.List ;

عوام کلاس جنریکس کا استعمال کرتے ہوئے {
عوام جامد باطل مرکزی ( تار [ ] args ) {
فہرست < تار > empName = نئی ArrayList <> ( ) ;
empName شامل کریں ( 'ہیری' ) ;
empName شامل کریں ( 'کمہار' ) ;

تار ابتدائی = empName حاصل کریں ( 0 ) ;
تار فائنل = empName حاصل کریں ( 1 ) ;

سسٹم . باہر . پرنٹ ایل این ( 'پہلا نام: ' + ابتدائی ) ;
سسٹم . باہر . پرنٹ ایل این ( 'دوسرا نام: ' + فائنل ) ;
}
}

مندرجہ بالا کوڈ کی وضاحت:

  • سب سے پہلے، مطلوبہ افادیت جاوا فائل میں درآمد کی جاتی ہے، اور 'کی کلاس جنریکس کا استعمال کرتے ہوئے 'اعلان کیا جاتا ہے۔
  • اگلا، ' ArrayList 'قسم کی' تار 'نام کے ساتھ اعلان کیا جاتا ہے' empName اور دو ڈمی ڈیٹا عناصر فراہم کرکے شروع کیا گیا۔
  • پھر، دو سٹرنگ قسم کے متغیرات بنائیں جس کا نام ' ابتدائی 'اور' فائنل ' اس کے بعد، انڈیکس نمبرز تک رسائی حاصل کرکے اقدار تفویض کریں۔
  • آخر میں، نتیجہ دیکھنے کے لیے دونوں متغیرات دکھائیں۔

عملدرآمد کے اختتام کے بعد، آؤٹ پٹ اس طرح لگتا ہے:

مندرجہ بالا سنیپ شاٹ واضح کرتا ہے کہ ٹائپ کاسٹنگ جنرک استعمال کرکے انجام دی گئی ہے۔

نتیجہ

حل کرنے کے لیے ' ClassCastException 'جاوا میں، پروگرامر کو مناسب قسم کی مطابقت کو یقینی بنانا چاہیے،' کا استعمال عام ' اور ' کی مثال 'آپریٹر. استثناء کو حل کرنے کے لیے، پروگرامر کو مناسب قسم کی مطابقت کو یقینی بنا کر کاسٹنگ آپریشن کا جائزہ لینا اور درست کرنا چاہیے۔ مزید یہ کہ یہ ' ClassCastException 'استعمال کرکے بچا جا سکتا ہے' عام 'اور ایک' کے استعمال کے ساتھ کی مثال 'آپریٹر. اس گائیڈ نے جاوا میں ClassCastException کو حل کرنے کا طریقہ دکھایا ہے۔