Bonsoir à tous,
Je suis confronté à un problème de compréhension face à un bout de code :
class Y{}; class Z extends Y{};
Et dans le main :
1 2 3 4 5 6
|
Z z=new Z();
Y y=new Y();
Z[] ty= new Z[10];
Y[] tx=ty; //mon suspect
ty[0]=y;// le vrai coupable ? |
Le résultat aboutit à une erreur de compilation.
Le morceau de code en rouge est celui que je soupçonne être responsable car on ne peut pas mettre d'objets Z dans un tableau d'objets Y .
Le bout de code qui suit est vrai car on peut mettre un objet Y dans le tableau d'objets Z [puisque Z extends Y] (qui se trouve être le vrai coupable...mais pourquoi ?)
Un deuxième bout de code assez similaire :
class Y{}; class Z extends Y{};
main :
1 2 3 4 5
| Z z=new Z();
Y y=new Y();
Z[] ty= new Z[10];
Y[] tx=ty;
ty[0]=(Z)y; |
Le résultat aboutit à un plantage à l'éxécution.
Si on me demande, je crois toujours que c'est "" Y[] tx = ty "" qui fout le boxon mais de l'un à l'autre , il n'y a que le bout de code en vert qui change..
Merci d'avance à vous de prendre le temps de me lire et de m'expliquer (accessoirement).
Partager