"Och nu, en kort lektion från Diego. Kort och rakt på sak. Om referenstypkonverteringar."
"Låt oss börja med objektvariabler. Du kan tilldela vilken referenstyp som helst till en sådan variabel ( bredningsomvandling ). Men för att göra tilldelningen åt andra hållet ( avsmalnande omvandling ), måste du uttryckligen ange en gjutningsoperation:"
Koda | Beskrivning |
---|---|
|
En typisk breddad referenskonvertering |
|
En typisk avsmalnande referenskonvertering |
|
Breddande konvertering. |
|
Runtime error! Du kan inte casta en heltalsreferens till en strängreferens. |
|
Runtime error! Du kan inte casta en heltalsreferens till en flytande referens. |
|
Konvertering till samma typ. En avsmalnande referenskonvertering. |
" En breddande eller avsmalnande referenskonvertering ändrar inte objektet på något sätt. Den avsmalnande (eller breddande) delen hänvisar specifikt till det faktum att tilldelningsoperationen inkluderar (inte inkluderar) typkontroll av variabeln och dess nya värde. "
"Detta är det sällsynta exemplet där allt är klart."
"För att undvika felen i dessa exempel har vi ett sätt att ta reda på vilken typ som refereras till av objektvariabeln: "
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öra den här kontrollen före varje breddningskonvertering om du inte är 100 % säker på objektets typ."
"Jag fattar."
GO TO FULL VERSION