Klasser är typer av data . Avgjutningar används för att identifiera objekt hämtas för arrayer , listor och samlingar . Avgjutningar kan även konvertera data från en typ till en annan . Klass gjutna undantag eller fel ClassCastException genereras av Java Virtual Machine ( JVM ) när du försöker konvertera inkompatibla datatyper . Klasser och kastar
Java , kastar identifiera den typ av objekt när det inte annars kan erkännas . Klass typer är omvandlingsbara till gränssnittstyper om klassen använder gränssnittet. Kastar konvertera ett gränssnitt typ i en klass typ . Metoder i java utföra funktioner eller beräkningar . Metoder kan dra data från olika klasser . När Java metoden försöker konvertera data från en klass till en annan med avgjutningar är fel kastas .
Orsaker
Fel kan uppstå när datakonverteringar och beräkningar ändrar data till inkompatibla datatyper . Om en hänvisning gjuts till en inkompatibel datatyp eller ogiltig datatyp , är en ClassCastException genereras av Java . ClassCastException uppstår också när en objektreferens gjuts till en underklass för vilka det inte är en instans. " SCJP Sun Certified Programmer för Java-plattformen" säger " en hel del av de metoder i Java API typerna Returobjekt som måste gjutas till sin rätt nedärvd klass typ . " Ändra klass av uppgifter när de behandlas med metoden kan också orsaka ClassCastException fel .
inkompatibla typer
Datum och heltal är inkompatibla datatyper . Karaktärer och numeriska datatyper är oförenliga . Booleska typer är oförenliga med siffror . Kovarianta återvändande typer är inte kompatibla med primitiva typer . Strängar och referenser objektet inkompatibla typer . Flyttal data som kan omvandlas till heltal , och värdena kommer att förkortas som följd. Trunkerade värden kan vara oförenligt i senare metoden beräkningar . Heltal och strängar är inkompatibla datatyper .
Förebygga fel
Se till att variabler manipuleras av samma metod har samma datatyp . Kasta in klassen i ett mål typ med ett större utbud än källan typ att förhindra trunkering . ClassCastException fel kan undvikas med hjälp av verklighetstrogna falska checkar . Lägg till " om " uttalanden för att kontrollera om datatyper är kompatibla för att förhindra ClassCastException fel och undantag instruktioner hantering på vad man gör om en datatyp är oförenliga . Använd undantagshantering logik inom metoden för undantag klass gjutna för att förhindra felmeddelanden . Instanceof uttalanden förhindra felaktig gjutning . Enligt " SCJP Sun Certified Programmer för Java Platform , " " använd instanceof operatören att undvika classcast - undantag när du är osäker på den faktiska datatypen för en referens som behöver casting " " Data Structures : Abstraction and Design Använda Java " . " fördelen av generika ( array listor ) är att kompilatorn kan garantera att alla operationer med objekt som refereras av en generisk ArrayList är "säkra" och kommer inte att orsaka undantag under körning . "