
"Og nu en kort lektion fra Diego. Kort og præcist. Om referencetypekonverteringer."
"Lad os starte med objektvariabler. Du kan tildele en hvilken som helst referencetype til en sådan variabel ( udvidelseskonvertering ). Men for at foretage tildelingen i den anden retning ( indsnævring af konvertering ), skal du udtrykkeligt angive en støbeoperation:"
Kode | Beskrivelse |
---|---|
|
En typisk udvidende referencekonvertering |
|
En typisk indsnævre referencekonvertering |
|
Udvidelseskonvertering. |
|
Kørselsfejl! Du kan ikke caste en heltalsreference til en strengreference. |
|
Kørselsfejl! Du kan ikke caste en heltalsreference til en Float-reference. |
|
Konvertering til samme type. En indsnævrende referencekonvertering. |
" En udvidende eller indsnævrende referencekonvertering ændrer ikke objektet på nogen måde. Indsnævringsdelen (eller udvidende) henviser specifikt til det faktum, at tildelingsoperationen inkluderer (ikke inkluderer) typekontrol af variablen og dens nye værdi. "
"Dette er det sjældne eksempel, hvor alt er klart."
"For at undgå fejlene i disse eksempler har vi en måde at finde ud af , hvilken type der refereres til af objektvariablen: "
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 udføre denne kontrol før hver udvidelseskonvertering, medmindre du er 100 % sikker på objektets type."
"Forstået."
GO TO FULL VERSION