Conversions de types de référence - 1

« 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
String s = "mom";
Object o = s; // o stores a String
Une conversion de référence avec élargissement typique
Object o = "mom"; // o stores a String
String s2 = (String) o;
Une conversion de référence avec réduction typique
Integer i = 123; // o stores an Integer
Object o = i;
Conversion avec élargissement.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Erreur d'exécution !
Tu ne peux pas convertir une référence Integer en référence String.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Erreur d'exécution !
Tu ne peux pas convertir une référence Integer en référence Float.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
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 exemplesnous avons un moyen de déterminer quel type est référencé par la variable Object : »

Code
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;
}
3
Mission
Syntaxe Java,  niveau 10leçon 6
Bloqué
Saisie de code
Parfois, inutile de réfléchir, il suffit de le marteler ! Aussi paradoxal que cela puisse paraître, il arrive que tes doigts se « souviennent » mieux des choses que ton esprit conscient. C'est pourquoi la formation du centre secret CodeGym comprend parfois des tâches qui t'obligent à saisir le code. En saisissant le code, tu t'habitues à la syntaxe et tu gagnes un peu de matière noire. Et rien de mieux pour combattre la paresse !

« Tu dois effectuer cette vérification avant chaque conversion avec élargissement, sauf si tu es sûr à 100 % du type de l'objet. »

« Compris. »