জাভাতে ClassCastException কিভাবে সমাধান করবেন?

Jabhate Classcastexception Kibhabe Samadhana Karabena



জাভাতে, ' ClassCastException ” রানটাইমে টাইপ সামঞ্জস্যের সমস্যাগুলি সনাক্ত করতে সাহায্য করে, বিকাশকারীদের ডেভেলপমেন্ট পর্বের শুরুতে সেগুলিকে ধরার অনুমতি দিয়ে৷ এটি টাইপ নিরাপত্তা নিশ্চিত করে, প্রোগ্রামে অসঙ্গতি প্রতিরোধ করে। ClassCastException ডিবাগিং, টেস্টিং, সঠিক টাইপ কাস্টিং ইত্যাদি প্রক্রিয়ায় অনেক সাহায্য করে।

এই গাইডটি জাভাতে ClassCastException সমাধান করার পদ্ধতি প্রদর্শন করে।







কিভাবে ClassCastException জাভাতে উত্থিত হয়?

দ্য ' ClassCastException ” সঠিক টাইপ কাস্টিং নিশ্চিত করে এবং অসামঞ্জস্যপূর্ণ টাইপ রূপান্তরের কারণে রানটাইম ত্রুটি প্রতিরোধ করে। সহজ কথায়, এই ব্যতিক্রমটি নিক্ষিপ্ত হয় যখন একটি বস্তুকে একটি বেমানান প্রকারে নিক্ষেপ করার চেষ্টা করা হয়।



উদাহরণস্বরূপ, 'এর সম্পর্কে নীচের কোডটি দেখুন ClassCastException 'জাভাতে:



আমদানি java.io.* ;
আমদানি java.lang.* ;
আমদানি java.util.* ;

ক্লাস লিনাক্স হিন্ট {
//চালক শ্রেণীর সৃষ্টি
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args )
{
চেষ্টা করুন {
অবজেক্ট অভিভাবক = নতুন অবজেক্ট ( ) ;

স্ট্রিং শিশু = ( স্ট্রিং ) অভিভাবক ;
পদ্ধতি . আউট . println ( শিশু ) ;
}
ধরা ( ব্যতিক্রম ) {
পদ্ধতি . আউট . println ( ) ;
}
}
}

উপরের কোডের ব্যাখ্যা:





  • মধ্যে ' চেষ্টা করুন 'ব্লক, একটি বস্তুর উদাহরণ' অভিভাবক '' ব্যবহার করে ঘোষণা করা হয় নতুন ' কীওয়ার্ড।
  • এর পরে, টাইপকাস্টিং ব্যবহার করা হয় যার মধ্যে ' বস্তু ' টাইপ টাইপকাস্ট করা হচ্ছে এবং এর নাম আছে ' শিশু
  • এই টাইপকাস্টিং নিয়ম লঙ্ঘন করছে যে অভিভাবক শ্রেণীকে তার শিশু শ্রেণিতে টাইপকাস্ট করা উচিত নয়। এই কারণেই ব্যতিক্রম দেখা দেয় কারণ ' বস্তু ” প্রকার একটি অভিভাবক শ্রেণী।
  • শেষ পর্যন্ত, ' ধরা 'ব্লক ব্যবহার করা হয় যা লাগে' ব্যতিক্রম একটি প্যারামিটার হিসাবে এবং কনসোলে একটি বার্তা প্রিন্ট করে।

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:



উপরের স্ন্যাপশটটি জাভাতে ClassCastException এর ঘটনা দেখায়।

জাভাতে ClassCastException কিভাবে সমাধান করবেন?

তিনটি সম্ভাব্য সমাধান ব্যবহার করা হয় যা বিকাশকারী সহজেই সমাধান করতে পারে বা 'উন্নত করার সুযোগ এড়াতে পারে' ClassCastException 'জাভাতে।

এই সমাধানগুলি আলাদাভাবে নীচে বর্ণনা করা হয়েছে:

সমাধান 1: 'instanceof' অপারেটরের ব্যবহার

দ্য ' উদাহরণস্বরুপ ' অপারেটর যাচাই করে যদি ' বস্তু ” কাঙ্ক্ষিত ধরনের বা না একটি উদাহরণ. এই যাচাইকরণের ঘটনা প্রতিরোধে সাহায্য করে ' ClassCastException ” উদাহরণস্বরূপ, নীচের কোড ব্লক দেখুন:

পাবলিক ক্লাস টাইপচেকিং লিনাক্স হিন্ট {
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {

অবজেক্ট অভিভাবক = 'লিনাক্সহিন্ট পরিবার' ;
যদি ( অভিভাবক উদাহরণস্বরুপ স্ট্রিং ) {
স্ট্রিং শিশু = ( স্ট্রিং ) অভিভাবক ;
পদ্ধতি . আউট . println ( 'স্ট্রিং টাইপকাস্ট করার পরে:' + শিশু ) ;
} অন্য {
পদ্ধতি . আউট . println ( 'অবজেক্ট হল কাঙ্ক্ষিত টাইপের স্ট্রিং এর একটি উদাহরণ।' ) ;
}
}
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমত, ' অভিভাবক 'অবজেক্ট তৈরি করা হয় যা একটি ডামি মান দিয়ে শুরু করা হয় ' চেষ্টা করুন 'ব্লক।
  • তারপর, ব্যবহার করুন 'যদি' বিবৃতি যেখানে ' উদাহরণস্বরুপ 'অপারেটর' এর উদাহরণ পরীক্ষা করতে ব্যবহৃত হয় অভিভাবক 'আকাঙ্ক্ষিত বস্তু' স্ট্রিং ' টাইপ
  • পরবর্তী, যদি শর্ত ফিরে আসে ' সত্য ” টাইপকাস্টিং সঞ্চালিত হয় এবং কনসোলে প্রদর্শিত হয়।
  • অন্যথায়, কাস্টম ত্রুটি বার্তাটি কনসোলে প্রদর্শিত হয়।

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

স্ন্যাপশট দেখায় যে টাইপকাস্টিং সফলভাবে সম্পন্ন হয়েছে এবং ClassCastException ব্যবহার করে সমাধান করা হয়েছে ' উদাহরণস্বরুপ ' অপারেটর.

সমাধান 2: পর্যালোচনা এবং সঠিক টাইপকাস্টিং অপারেশন

আরেকটি সমাধান হল কোড একাধিকবার পরীক্ষা করা এবং টাইপকাস্টিংয়ের জন্য সামঞ্জস্যপূর্ণ প্রকারগুলি পর্যালোচনা করা। উদাহরণস্বরূপ, নীচের কোডটি দেখুন যেখানে ' ClassCastException টাইপকাস্টিংয়ের জন্য একটি বেমানান পছন্দসই প্রকারের কারণে গ্রেফতার করা হয়:

পাবলিক ক্লাস টাইপ চেকলিনাক্স হিন্ট {
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
অবজেক্ট অভিভাবক = 'লিনাক্সহিন্ট পরিবার' ;
পূর্ণসংখ্যা রূপান্তরিত সংখ্যা = ( পূর্ণসংখ্যা ) অভিভাবক ;
পদ্ধতি . আউট . println ( 'টাইপকাস্ট করার পরে সংখ্যা:' + রূপান্তরিত সংখ্যা ) ;
}
}

উপরের কোডে, প্রোগ্রামার ভুলভাবে ' স্ট্রিং ' প্রতি ' পূর্ণসংখ্যা

সংকলন পর্ব শেষ হওয়ার পরে:

উপরের স্ন্যাপশটটি ClassCastException এর ঘটনা দেখায়।

সমাধান 3: জেনেরিকের ব্যবহার

প্রোগ্রামাররা ব্যবহার করতে পারেন ' জেনেরিক ” প্রত্যাশিত প্রকারগুলি নির্দিষ্ট করতে এবং সংকলনের সময় টাইপ সুরক্ষা প্রয়োগ করতে৷

উদাহরণস্বরূপ, নীচের কোড দেখুন:

আমদানি java.util.ArrayList ;
আমদানি java.util.লিস্ট ;

পাবলিক ক্লাস জেনেরিক ব্যবহার করে {
পাবলিক স্থির অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
তালিকা < স্ট্রিং > empName = নতুন অ্যারেলিস্ট <> ( ) ;
empName যোগ করুন ( 'হ্যারি' ) ;
empName যোগ করুন ( 'কুমার' ) ;

স্ট্রিং প্রাথমিক = empName পাওয়া ( 0 ) ;
স্ট্রিং ফাইনাল = empName পাওয়া ( 1 ) ;

পদ্ধতি . আউট . println ( 'নামের প্রথম অংশ: ' + প্রাথমিক ) ;
পদ্ধতি . আউট . println ( 'দ্বিতীয় নাম: ' + ফাইনাল ) ;
}
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমত, প্রয়োজনীয় ইউটিলিটিগুলি জাভা ফাইলে আমদানি করা হয় এবং 'এর একটি ক্লাস জেনেরিক ব্যবহার করে ” ঘোষণা করা হয়।
  • পরবর্তী, ' অ্যারেলিস্ট 'প্রকার' স্ট্রিং 'নাম দিয়ে ঘোষণা করা হয়' empName ” এবং দুটি ডামি ডেটা উপাদান প্রদান করে শুরু করা হয়েছে।
  • তারপর, 'নামক দুটি স্ট্রিং-টাইপ ভেরিয়েবল তৈরি করুন প্রাথমিক ' এবং ' ফাইনাল ” এর পরে, সূচক নম্বরগুলি অ্যাক্সেস করে মান নির্ধারণ করুন।
  • শেষ পর্যন্ত, ফলাফল দেখতে উভয় ভেরিয়েবল প্রদর্শন করুন।

এক্সিকিউশন শেষ হওয়ার পরে, আউটপুটটি এইরকম দেখায়:

উপরের স্ন্যাপশটটি ব্যাখ্যা করে যে জেনেরিক ব্যবহার করে টাইপকাস্টিং করা হয়েছে।

উপসংহার

সমাধান করতে ' ClassCastException 'জাভাতে, প্রোগ্রামারকে অবশ্যই সঠিক ধরণের সামঞ্জস্য নিশ্চিত করতে হবে, 'এর ব্যবহার জেনেরিক ' এবং ' উদাহরণস্বরুপ ' অপারেটর. ব্যতিক্রম সমাধানের জন্য, প্রোগ্রামারকে অবশ্যই সঠিক প্রকারের সামঞ্জস্য নিশ্চিত করে কাস্টিং অপারেশন পর্যালোচনা এবং সংশোধন করতে হবে। তাছাড়া, এই ' ClassCastException 'ব্যবহার করে এড়ানো যায়' জেনেরিক 'এবং একটি' ব্যবহার করে উদাহরণস্বরুপ ' অপারেটর. এই গাইডটি জাভাতে ClassCastException সমাধান করার পদ্ধতি প্রদর্শন করেছে।