Le cast en Java ..
Résolu
Mayusu
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
Mayusu Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
Mayusu Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
Bonsoir :D
Comment on fait le cast en java ?
En fait : J'ai deux classes A et B avec A extends B .. j'ai une méthode nommée "Meth" dans la classe B et une instance "Exmp" de la classe A (en fait elle est de la classe B mais stockée dans A) .. je veux utiliser la méthode "Meth" sur l'instance "Exmp" mais ça me sort une erreur !
Merci beaucoup d'avance :)
Comment on fait le cast en java ?
En fait : J'ai deux classes A et B avec A extends B .. j'ai une méthode nommée "Meth" dans la classe B et une instance "Exmp" de la classe A (en fait elle est de la classe B mais stockée dans A) .. je veux utiliser la méthode "Meth" sur l'instance "Exmp" mais ça me sort une erreur !
Merci beaucoup d'avance :)
A voir également:
- Cast java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Jeux java itel 5360 - Forum Mobile
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
3 réponses
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