"Og nå, en kort leksjon fra Diego. Kort og til poenget. Om referansetypekonverteringer."
"La oss starte med objektvariabler. Du kan tilordne en hvilken som helst referansetype til en slik variabel ( utvidelseskonvertering ). Men for å gjøre tilordningen i den andre retningen ( innsnevringskonvertering ), må du eksplisitt angi en støpeoperasjon:"
Kode | Beskrivelse |
---|---|
|
En typisk utvidende referansekonvertering |
|
En typisk innsnevrende referansekonvertering |
|
Utvidende konvertering. |
|
Kjøretidsfeil! Du kan ikke caste en heltallsreferanse til en strengreferanse. |
|
Kjøretidsfeil! Du kan ikke caste en heltallsreferanse til en flytende referanse. |
|
Konvertering til samme type. En innsnevrende referansekonvertering. |
" En utvidende eller innsnevrende referansekonvertering endrer ikke objektet på noen måte. Innsnevringsdelen (eller utvidelsesdelen) refererer spesifikt til det faktum at tilordningsoperasjonen inkluderer (ikke inkluderer) typekontroll av variabelen og dens nye verdi. "
"Dette er det sjeldne eksemplet hvor alt er klart."
"For å unngå feilene i disse eksemplene har vi en måte å finne ut hvilken type som refereres til av objektvariabelen: "
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
"Du bør utføre denne kontrollen før hver utvidelseskonvertering med mindre du er 100 % sikker på objektets type."
"Har det."
GO TO FULL VERSION