Le cast en Java ..
Résolu/Fermé
Mayusu
Messages postés
43
Date d'inscription
lundi 8 septembre 2014
Statut
Membre
Dernière intervention
27 janvier 2016
-
22 mars 2015 à 22:00
Mayusu Messages postés 43 Date d'inscription lundi 8 septembre 2014 Statut Membre Dernière intervention 27 janvier 2016 - 23 mars 2015 à 10:21
Mayusu Messages postés 43 Date d'inscription lundi 8 septembre 2014 Statut Membre Dernière intervention 27 janvier 2016 - 23 mars 2015 à 10:21
A voir également:
- Cast java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Chrome cast sur tv - Guide
- Java apk - Télécharger - Langages
- Waptrick jeux java itel ✓ - Forum Logiciels
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 22/03/2015 à 22:38
Modifié par KX le 22/03/2015 à 22:38
Bonjour,
"elle est de la classe B mais stockée dans A"
Impossible : si A extends B, une instance de A peut être stockée dans une variable de type B, mais pas l'inverse, sauf si A=B.
Exemple :
Ce code est impossible, il n'y a rien qui permet de construire un String à partir d'un Object.
En revanche :
Ça c'est possible, on perd la spécificité du String mais ça reste un Object valable.
Pour l'histoire du cast en Java, cela permet de passer d'une variable de classe B à une variable de classe A extends B, uniquement si l'objet dans la variable est bien une instance de A.
Pour être propre, il vaut mieux toujours faire une vérification du type réel d'un objet avant de le caster, ça évite les surprises...
La confiance n'exclut pas le contrôle
"elle est de la classe B mais stockée dans A"
Impossible : si A extends B, une instance de A peut être stockée dans une variable de type B, mais pas l'inverse, sauf si A=B.
Exemple :
Object obj = new Object(); // Object est B String str = obj; // String est A, extends B
Ce code est impossible, il n'y a rien qui permet de construire un String à partir d'un Object.
En revanche :
String str = "test"; // String est A, extends B Object obj = str; // Object est B
Ça c'est possible, on perd la spécificité du String mais ça reste un Object valable.
Pour l'histoire du cast en Java, cela permet de passer d'une variable de classe B à une variable de classe A extends B, uniquement si l'objet dans la variable est bien une instance de A.
String str = "test"; // String est A, extends B Object obj = str; // Object est B String str2 = (String) obj; // on caste B en A, peut échouer
Pour être propre, il vaut mieux toujours faire une vérification du type réel d'un objet avant de le caster, ça évite les surprises...
String str = "test"; // String est A, extends B Object obj = str; // Object est B if (obj!=null && !(obj instanceof String)) throw new IllegalStateException("String expected but "+obj.getClass()+" found: "+obj); String str2 = (String) obj; // on caste B en A, ne peut pas échouer
La confiance n'exclut pas le contrôle