Klassene er typer data . Kaster brukes til å identifisere gjenstander hentet for matriser , lister og samlinger. Kaster kan også konvertere data fra en type til en annen. Klasse støpte unntak eller ClassCastException feil er generert av Java Virtual Machine (JVM ) når du forsøker å konvertere inkompatible datatyper . Klasser og kaster
I Java , kaster identifisere hvilken type objekt når det ellers kanskje ikke ville bli gjenkjent. Klasse typer er konvertible til grensesnitt typer hvis klassen bruker grensesnitt . Kaster konvertere et grensesnitt skriver inn i en klasse type. Metoder i java utføre funksjoner eller beregninger. Metoder kan trekke data fra ulike klassetrinn typer. Når Java -metoden forsøker å konvertere data fra en klasse til en annen ved hjelp kaster, er feil kastet .
Årsaker
Feil kan oppstå når data konverteringer og beregninger endre data til inkompatible datatyper . Hvis en referanse er støpt til en inkompatibel datatype eller ugyldig datatype er en ClassCastException generert av Java. ClassCastException oppstår også når et objekt referanse er støpt til en underklasse som det ikke er et eksempel. " SCJP Sun Certified Programmer for Java Platform" sier "mye av metodene i Java API Returner objekt typer som trenger å bli kastet til sin aktuelle barnet klassen type. " Endre klassen av data når behandles av metoden kan også føre ClassCastException feil .
Inkompatible typer
datoer og heltall er inkompatible datatyper . Tegn og numeriske datatyper er inkompatible. Boolske typer er uforenlig med tall. Kovariant retur typer er ikke kompatible med primitive typer . Strenger og objekt referanser er inkompatible typer. Flyttallsdata kan konverteres til heltall , og verdiene vil bli avkortet som følge av dette. Avkortede verdier kan være inkompatible i senere metode beregninger. Heltall og strenger er inkompatible datatyper .
Forebygge feil
Sørg for at variabler manipulert av den samme metoden har samme datatype . Kastet klassen inn et mål type med en større rekkevidde enn kilden for å forhindre avkutting . ClassCastException feil kan unngås ved å bruke ekte - falske sjekker. Legg til " hvis " uttalelser for å verifisere om datatyper er kompatible for å hindre ClassCastException feil og unntak håndtering instruksjoner om hva du skal gjøre hvis en datatype er uforenlig . Bruk avvikshåndtering logikken i metoden for klassen kastet unntak for å hindre feilmeldinger. Instanceof uttalelser hindre feil casting. Ifølge " SCJP Sun Certified Programmer for Java Platform ", " bruke instanceof operatør for å unngå classcast - unntak når du er usikker på de faktiske data type en referanse som trenger casting " " datastrukturer : abstraksjon og design Bruk Java" . " fordelen av generiske legemidler ( array- lister ) er at kompilatoren kan sikre at alle operasjoner som involverer gjenstander refereres av en generisk ArrayList er ' safe' og vil ikke føre til unntak under kjøring. "