« Et maintenant, une brève leçon de Diego. Courte et sans fioritures. Sur les conversions des types de référence. »
« Commençons par les variables Object. Tu peux affecter tout type de référence à une telle variable (conversion avec élargissement). Cependant, pour effectuer l'affectation dans l'autre sens (conversion avec réduction), tu dois explicitement indiquer une opération de conversion : »
Code | Description |
---|---|
|
Une conversion de référence avec élargissement typique |
|
Une conversion de référence avec réduction typique |
|
Conversion avec élargissement. |
|
Erreur d'exécution ! Tu ne peux pas convertir une référence Integer en référence String. |
|
Erreur d'exécution ! Tu ne peux pas convertir une référence Integer en référence Float. |
|
Conversion dans le même type. Une conversion de référence avec réduction. |
"Une conversion de référence avec élargissement ou réduction ne change l'objet d'aucune façon. La partie réduite (ou élargie) fait référence spécifiquement au fait que l'opération d'affectation inclut (ou n'inclut pas) la vérification de type de la variable et de sa nouvelle valeur. »
« C'est le rare exemple où tout est clair. »
« Pour éviter les erreurs dans ces exemples, nous avons un moyen de déterminer quel type est référencé par la variable Object : »
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;
}
« Tu dois effectuer cette vérification avant chaque conversion avec élargissement, sauf si tu es sûr à 100 % du type de l'objet. »
« Compris. »
GO TO FULL VERSION