
'En nu een korte les van Diego. Kort en bondig. Over conversies van referentietypes.'
"Laten we beginnen met objectvariabelen. U kunt elk referentietype aan zo'n variabele toewijzen ( verbredende conversie ). Om de toewijzing echter in de andere richting te maken ( vernauwende conversie ), moet u expliciet een cast-bewerking aangeven:"
Code | Beschrijving |
---|---|
|
Een typische verbredende referentieconversie |
|
Een typische versmallende referentieconversie |
|
Verbredende conversie. |
|
Runtime-fout! U kunt geen Integer-referentie casten naar een String-referentie. |
|
Runtime-fout! U kunt geen Integer-referentie casten naar een Float-referentie. |
|
Ombouw naar hetzelfde type. Een versmallende referentieconversie. |
" Een verbredende of vernauwende referentieconversie verandert het object op geen enkele manier. Het vernauwende (of versmallende) deel verwijst specifiek naar het feit dat de toewijzingsbewerking typecontrole van de variabele en de nieuwe waarde omvat (niet omvat). "
"Dit is het zeldzame voorbeeld waarin alles duidelijk is."
"Om de fouten in deze voorbeelden te voorkomen , hebben we een manier om erachter te komen naar welk type wordt verwezen door de objectvariabele: "
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;
}
"U moet deze controle vóór elke verbredingsconversie uitvoeren, tenzij u 100% zeker bent van het objecttype."
"Begrepen."
GO TO FULL VERSION