Paano Malutas ang ClassCastException sa Java?

Paano Malutas Ang Classcastexception Sa Java



Sa Java, ang ' ClassCastException ” tumutulong na matukoy ang mga isyu sa pagiging tugma ng uri sa runtime, sa pamamagitan ng pagpayag sa mga developer na mahuli sila nang maaga sa yugto ng pag-develop. Tinitiyak din nito ang kaligtasan ng uri, na pumipigil sa mga hindi pagkakapare-pareho sa programa. Malaki ang naitutulong ng ClassCastException sa proseso ng pag-debug, pagsubok, tamang uri ng paghahagis, atbp.

Ipinapakita ng gabay na ito ang pamamaraan upang malutas ang ClassCastException sa Java.







Paano Lumitaw ang ClassCastException sa Java?

Ang ' ClassCastException ” tinitiyak ang wastong uri ng pag-cast at pinipigilan ang mga error sa runtime na dulot ng mga hindi tugmang uri ng mga conversion. Sa madaling salita, ang pagbubukod na ito ay itinapon kapag ang isang bagay ay sinubukang i-cast sa isang hindi tugmang uri.



Halimbawa, bisitahin ang code sa ibaba tungkol sa ' ClassCastException ” sa Java:



angkat java.io.* ;
angkat java.lang.* ;
angkat java.util.* ;

klase LinuxHint {
//Paglikha ng klase ng driver
pampubliko static walang bisa pangunahing ( String [ ] args )
{
subukan {
Bagay magulang = bago Bagay ( ) ;

String bata = ( String ) magulang ;
Sistema . palabas . println ( bata ) ;
}
mahuli ( Exception f ) {
Sistema . palabas . println ( f ) ;
}
}
}

Paliwanag ng code sa itaas:





  • Nasa ' subukan 'block, ang halimbawa ng isang bagay' magulang ' ay ipinahayag sa pamamagitan ng paggamit ng ' bago ” keyword.
  • Pagkatapos nito, ginagamit ang typecasting kung saan ang ' bagay Ang 'type ay typecast at may pangalan ng ' bata ”.
  • Ang typecasting na ito ay lumalabag sa panuntunan na ang parent class ay hindi dapat i-typecast sa child class nito. Iyon ang dahilan kung bakit lumitaw ang pagbubukod dahil ang ' bagay ” ang uri ay isang klase ng magulang.
  • Sa huli, ang ' mahuli 'Ang bloke ay ginagamit na tumatagal ng ' Exception ” bilang parameter at nagpi-print ng mensahe sa console.

Pagkatapos ng pagtatapos ng yugto ng pagpapatupad:



Ang snapshot sa itaas ay nagpapakita ng paglitaw ng ClassCastException sa Java.

Paano Malutas ang ClassCastException sa Java?

Tatlong posibleng solusyon ang ginagamit na madaling maresolba o maiwasan ng developer ang pagkakataong itaas ang “ ClassCastException ” sa Java.

Ang mga solusyong ito ay inilarawan sa ibaba nang hiwalay:

Solusyon 1: Paggamit ng 'instanceof' Operator

Ang ' halimbawa ng Bine-verify ng operator kung ang ' bagay ” ay isang instance ng gustong uri o hindi. Nakakatulong ang pagpapatunay na ito sa pagpigil sa paglitaw ng ' ClassCastException ”. Halimbawa, bisitahin ang block ng code sa ibaba:

pampubliko klase TypeCheckingLinuxHint {
pampubliko static walang bisa pangunahing ( String [ ] args ) {

Bagay magulang = 'Pamilya ng LinuxHint' ;
kung ( magulang halimbawa ng String ) {
String bata = ( String ) magulang ;
Sistema . palabas . println ( 'Pagkatapos ng pag-typecast ng String: ' + bata ) ;
} iba pa {
Sistema . palabas . println ( 'Ang object ay isang instance ng gustong uri ng String.' ) ;
}
}
}

Paliwanag ng code sa itaas:

  • Una, ang ' magulang Ang ' object ay nilikha na pinasimulan ng isang dummy na halaga sa loob ng ' subukan ” block.
  • Pagkatapos, gamitin ang 'kung' pahayag kung saan ang ' halimbawa ng 'Ang operator ay ginagamit upang suriin ang halimbawa ng ' magulang 'bagay na may ninanais' String ” type.
  • Susunod, kung bumalik ang kundisyon ' totoo ” ang typecasting ay ginagawa at ipinapakita sa console.
  • Kung hindi, ang custom na mensahe ng error ay ipinapakita sa console.

Pagkatapos ng pagtatapos ng yugto ng pagpapatupad:

Ang snapshot ay nagpapakita na ang typecasting ay matagumpay na nagawa at ang ClassCastException ay nalutas gamit ang ' halimbawa ng ” operator.

Solusyon 2: Suriin at Tamang Typecasting Operation

Ang isa pang solusyon ay suriin ang code nang maraming beses at suriin ang mga katugmang uri para sa typecasting. Halimbawa, bisitahin ang code sa ibaba kung saan ang ' ClassCastException ” ay naaresto dahil sa hindi tugmang gustong uri para sa typecasting:

pampubliko klase TypeCheckLinuxHint {
pampubliko static walang bisa pangunahing ( String [ ] args ) {
Bagay magulang = 'Pamilya ng LinuxHint' ;
Integer convertedNumber = ( Integer ) magulang ;
Sistema . palabas . println ( 'Numero Pagkatapos ng Typecasting: ' + convertedNumber ) ;
}
}

Sa code sa itaas, ang programmer ay hindi wastong nai-cast ang ' String 'sa' Integer ”.

Pagkatapos ng pagtatapos ng yugto ng compilation:

Ipinapakita ng snapshot sa itaas ang paglitaw ng ClassCastException.

Solusyon 3: Paggamit ng Generics

Ang mga programmer ay maaaring gumamit ng ' generics ” upang tukuyin ang mga inaasahang uri at ipatupad ang uri ng kaligtasan sa oras ng pag-compile.

Halimbawa, bisitahin ang code sa ibaba:

angkat java.util.ArrayList ;
angkat java.util.List ;

pampubliko klase gamit ang Generics {
pampubliko static walang bisa pangunahing ( String [ ] args ) {
Listahan < String > empName = bago ArrayList <> ( ) ;
empName. idagdag ( 'Harry' ) ;
empName. idagdag ( 'Potter' ) ;

String Inisyal = empName. makuha ( 0 ) ;
String Pangwakas = empName. makuha ( 1 ) ;

Sistema . palabas . println ( 'Pangalan: ' + Inisyal ) ;
Sistema . palabas . println ( 'Pangalawang pangalan: ' + Pangwakas ) ;
}
}

Paliwanag ng code sa itaas:

  • Una, ang mga kinakailangang kagamitan ay ini-import sa Java file, at isang klase ng ' gamit ang Generics ” ay ipinahayag.
  • Susunod, ang ' ArrayList 'ng uri' String Ang 'ay ipinahayag na may pangalang' empName ” at sinimulan sa pamamagitan ng pagbibigay ng dalawang dummy na elemento ng data.
  • Pagkatapos, lumikha ng dalawang String-type na variable na pinangalanang ' Inisyal 'at' Pangwakas ”. Pagkatapos nito, magtalaga ng mga halaga sa pamamagitan ng pag-access sa mga numero ng index.
  • Sa huli, ipakita ang parehong mga variable upang makita ang resulta.

Pagkatapos ng pagtatapos ng pagpapatupad, ang output ay ganito ang hitsura:

Ang snapshot sa itaas ay naglalarawan na ang typecasting ay isinagawa sa pamamagitan ng paggamit ng generics.

Konklusyon

Upang malutas ang ' ClassCastException 'sa Java, dapat tiyakin ng programmer ang tamang pagkakatugma ng uri, paggamit ng ' generics ' at ang ' halimbawa ng ” operator. Upang malutas ang pagbubukod, dapat suriin at itama ng programmer ang pagpapatakbo ng pag-cast sa pamamagitan ng pagtiyak ng wastong pagkakatugma ng uri. Bukod dito, ito ' ClassCastException 'Maaaring iwasan sa pamamagitan ng paggamit ng' generics 'at sa paggamit ng isang' halimbawa ng ” operator. Ang gabay na ito ay nagpakita ng paraan upang malutas ang ClassCastException sa Java.