Inkompatible typer ved brug Cast Metode til klasse i Java

August 8

Inkompatible typer ved brug Cast Metode til klasse i Java


Klasser er typer af data. Casts bruges til at identificere objekter hentet for arrays, lister og samlinger. Casts kan også konvertere data fra en type til en anden. Klasse støbte undtagelser eller classcastexception fejl genereres af Java Virtual Machine (JVM), når du forsøger at konvertere inkompatible datatyper.

Klasser og Casts

I Java, kaster identificere den type objekt, når det ellers ikke ville blive genkendt. Klasse typer er konvertible til at interface typer, hvis den klasse bruger grænsefladen. Afstøbninger konvertere en grænseflade type i en klasse type. Metoder i java udføre funktioner eller beregninger. Metoder kan trække data fra forskellige klasse typer. Når Java metode forsøger at konvertere data fra en klasse til en anden ved hjælp af afstøbninger, er fejl kastet.

Årsager

Fejl kan forekomme, når data konverteringer og beregninger ændrer data til uforenelige datatyper. Hvis en reference er støbt til en inkompatibel datatype eller ugyldig datatype er en classcastexception genereret af Java. Classcastexception opstår også, når et objekt henvisning støbes til en underklasse, for hvilken det ikke er et tilfælde. "SCJP Sun Certified Programmer for Java Platform" siger "en masse af de metoder i Java API retur Object typer, der har brug for at blive kastet til deres passende barn klasse type." Ændring klassen af ​​data, når behandles af metoden kan også forårsage classcastexception fejl.

Inkompatible typer

Datoer og heltal er inkompatible datatyper. Tegn og numeriske datatyper er uforenelige. Boolean typer er uforenelige med tal. Covariant returtyper er ikke kompatible med oprindelig type. Strygere og objektreferencer er uforenelige typer. Floating point data kan konverteres til heltal, og værdierne vil blive afkortet som følge heraf. Trunkerede værdier kan være uforeneligt i senere metode beregninger. Heltal og strenge er inkompatible datatyper.

forebygge fejl

Sikre, at variable manipuleret ved samme metode har samme datatype. Kast klassen i et mål type med en større rækkevidde end kildetypen at forhindre trunkering. Classcastexception fejl kan undgås ved at bruge sand-falsk kontrol. Tilføj "hvis" erklæringer for at kontrollere, om datatyper er kompatible til at forhindre classcastexception fejl og instruktioner exception handling om, hvad man skal gøre, hvis en datatype er uforenelig. Brug logik exception handling inden metoden til klassen støbte undtagelser for at forhindre fejlmeddelelser. Instanceof udsagn forhindre forkert støbning. Ifølge "SCJP Sun Certified Programmer for Java Platform," "bruge instanceof operatør for at undgå classcast-undtagelse, når du er usikker på den egentlige datatype af en reference, der har brug casting" "datastrukturer: Abstraction og design Brug Java". " den fordel, at generiske lægemidler (array-lister) er, at oversætteren kan sikre, at alle operationer, der indebærer objekter refereres til af en generisk ArrayList er "sikkert" og vil ikke forårsage undtagelser under kørsel tid. "


relaterede artikler