ClassCastExceptionin ratkaiseminen Javassa?

Classcastexceptionin Ratkaiseminen Javassa



Javassa ' ClassCastException ” auttaa tunnistamaan tyyppien yhteensopivuusongelmia ajon aikana antamalla kehittäjille mahdollisuuden havaita ne varhaisessa kehitysvaiheessa. Se varmistaa myös tyyppiturvallisuuden ja estää ohjelman epäjohdonmukaisuudet. ClassCastException auttaa paljon virheenkorjauksessa, testaamisessa, oikean tyyppisessä valussa jne.

Tämä opas esittelee prosessin ClassCastExceptionin ratkaisemiseksi Javassa.







Kuinka ClassCastException syntyy Javassa?

' ClassCastException ” varmistaa oikean tyyppivalun ja estää yhteensopimattomien tyyppimuunnosten aiheuttamat ajonaikaiset virheet. Yksinkertaisesti sanottuna tämä poikkeus heitetään, kun objektia yritetään heittää yhteensopimattomaan tyyppiin.



Käy esimerkiksi alla olevassa koodissa ' ClassCastException Javalla:



tuonti java.io.* ;
tuonti java.lang.* ;
tuonti java.util.* ;

luokkaa LinuxHint {
//Kuljettajaluokan luominen
julkinen staattinen mitätön pää ( merkkijono [ ] args )
{
yrittää {
Esine vanhempi = Uusi Esine ( ) ;

merkkijono lapsi = ( merkkijono ) vanhempi ;
Järjestelmä . ulos . println ( lapsi ) ;
}
ottaa kiinni ( Poikkeus f ) {
Järjestelmä . ulos . println ( f ) ;
}
}
}

Selitys yllä olevalle koodille:





  • ' yrittää 'lohko, objektin esiintymä' vanhempi ' ilmoitetaan käyttämällä ' Uusi ”avainsana.
  • Tämän jälkeen käytetään typecastingia, jossa ' esine '-tyyppiä kirjoitetaan ja sen nimi on ' lapsi ”.
  • Tämä tyyppilähetys rikkoo sääntöä, jonka mukaan pääluokkaa ei saa kirjoittaa alaluokkaansa. Tästä syystä poikkeus syntyy, koska ' esine ”-tyyppi on vanhempiluokka.
  • Lopulta ' ottaa kiinni 'lohkoa käytetään, joka vie' Poikkeus ” parametriksi ja tulostaa viestin konsoliin.

Toteutusvaiheen päätyttyä:



Yllä oleva tilannekuva näyttää ClassCastExceptionin esiintymisen Javassa.

ClassCastExceptionin ratkaiseminen Javassa?

Käytössä on kolme mahdollista ratkaisua, jotka kehittäjä voi helposti ratkaista tai välttää mahdollisuuden nostaa ' ClassCastException 'Javalla.

Nämä ratkaisut kuvataan alla erikseen:

Ratkaisu 1: Operaattorin 'instanceof' käyttö

' esiintymä '-operaattori tarkistaa, onko ' esine ” on halutun tyyppinen esiintymä vai ei. Tämä vahvistus auttaa estämään ' ClassCastException ”. Käy esimerkiksi alla olevassa koodilohkossa:

julkinen luokkaa TypeCheckingLinuxHint {
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {

Esine vanhempi = 'LinuxHint-perhe' ;
jos ( vanhempi esiintymä merkkijono ) {
merkkijono lapsi = ( merkkijono ) vanhempi ;
Järjestelmä . ulos . println ( 'Järjestön kirjoittamisen jälkeen:' + lapsi ) ;
} muu {
Järjestelmä . ulos . println ( 'Objekti on halutun tyypin merkkijono esiintymä.' ) ;
}
}
}

Selitys yllä olevalle koodille:

  • Ensinnäkin ' vanhempi '-objekti luodaan, joka alustetaan valearvolla '' yrittää ” lohko.
  • Käytä sitten 'jos' lausunto, jossa ' esiintymä '-operaattoria käytetään tarkistamaan ' vanhempi 'objekti halutulla' merkkijono ”tyyppi.
  • Seuraavaksi, jos ehto palaa ' totta ” typecasting suoritetaan ja näytetään konsolissa.
  • Muussa tapauksessa mukautettu virheilmoitus näytetään konsolissa.

Toteutusvaiheen päätyttyä:

Tilannekuva osoittaa, että tyyppilähetys on suoritettu onnistuneesti ja ClassCastException on ratkaistu käyttämällä ' esiintymä ”operaattori.

Ratkaisu 2: Tarkista ja korjaa tyyppilähetystoiminto

Toinen ratkaisu on tarkistaa koodi useita kertoja ja tarkistaa yhteensopivat tyypit tyyppilähetystä varten. Käy esimerkiksi alla olevassa koodissa, jossa ' ClassCastException ” pidätetään, koska tyyppi ei ole yhteensopiva tyyppiä varten:

julkinen luokkaa TypeCheckLinuxHint {
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {
Esine vanhempi = 'LinuxHint-perhe' ;
Kokonaisluku muunnettuNumber = ( Kokonaisluku ) vanhempi ;
Järjestelmä . ulos . println ( 'Numero kirjoituksen jälkeen:' + muunnettuNumber ) ;
}
}

Yllä olevassa koodissa ohjelmoija heitti väärin ' merkkijono ”–” Kokonaisluku ”.

Kokoonpanovaiheen päätyttyä:

Yllä oleva tilannekuva näyttää ClassCastExceptionin esiintymisen.

Ratkaisu 3: Generics käyttö

Ohjelmoijat voivat käyttää geneeriset lääkkeet ” määrittääksesi odotetut tyypit ja valvoaksesi tyyppiturvallisuutta käännöshetkellä.

Käy esimerkiksi alla olevassa koodissa:

tuonti java.util.ArrayList ;
tuonti java.util.List ;

julkinen luokkaa käyttämällä Genericsiä {
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {
Lista < merkkijono > empName = Uusi ArrayList <> ( ) ;
empName. lisätä ( 'Harry' ) ;
empName. lisätä ( 'Potter' ) ;

merkkijono Alkukirjain = empName. saada ( 0 ) ;
merkkijono Lopullinen = empName. saada ( 1 ) ;

Järjestelmä . ulos . println ( 'Etunimi: ' + Alkukirjain ) ;
Järjestelmä . ulos . println ( 'Toinen nimi: ' + Lopullinen ) ;
}
}

Selitys yllä olevalle koodille:

  • Ensin tarvittavat apuohjelmat tuodaan Java-tiedostoon ja luokka ' käyttämällä Genericsiä ” julistetaan.
  • Seuraavaksi ' ArrayList 'tyyppiä' merkkijono ” on julistettu nimellä ” empName ' ja alustetaan antamalla kaksi valedataelementtiä.
  • Luo sitten kaksi merkkijonotyyppistä muuttujaa nimeltä ' Alkukirjain ' ja ' Lopullinen ”. Määritä sen jälkeen arvot käyttämällä indeksinumeroita.
  • Lopuksi näytä molemmat muuttujat nähdäksesi tuloksen.

Suorituksen päätyttyä tulos näyttää tältä:

Yllä oleva tilannekuva havainnollistaa, että tyyppilähetys on suoritettu käyttämällä geneerisiä tuotteita.

Johtopäätös

ratkaistaksesi ' ClassCastException ' Javassa ohjelmoijan on varmistettava oikea tyyppiyhteensopivuus, ' geneeriset lääkkeet ' ja ' esiintymä ”operaattori. Poikkeuksen ratkaisemiseksi ohjelmoijan on tarkistettava ja korjattava valutoiminto varmistamalla oikeanlainen tyyppiyhteensopivuus. Lisäksi tämä ' ClassCastException ' voidaan välttää käyttämällä ' geneeriset lääkkeet ' ja käyttämällä ' esiintymä ”operaattori. Tämä opas on esitellyt menetelmän ClassCastExceptionin ratkaisemiseksi Javassa.