-
Cast en java
Bonjour,
Est ce que le cast en java, par exmple(MaListe liste=(MaListe) monObj), crée un copie ou un clone de l'objet monObj ou est ce que l'objet liste va référencer le même objet monObj au final (et si je change dans liste c'est aussi monObj qui est changé) ?
Merci.
-
Le cast n'est qu'un changement de point de vue sur un et un seul objet.
Ca consiste à dire au compilateur "Ce que tu crois être un objet X est en fait un objet Y, et donc je peux m'en servir comme d'un objet Y".
Il n'y a aucun recopiage, il s'agit toujours du même objet.
-
Au fait je posait la question par rapport à une application web (Struts) ou j'ai --> MaListe liste=(MaListe) session.getAttribute(monObj). Dans une classe, je modifie liste, mais monObj n'est pas modifié (dans la session)! Est ce que celà veut dire simplement que le session.getAttribute ne renvoie pas le même objet? Par contre quand je fais session.setAttribute("monObj",liste)...là ca marche!
-
Comment tu as modifié ta liste? par des setter (appel d'un elementDeLaListe.setXX(xxx)) ou t'a carrément fait taListe = uneAutreListe?
Si c'est bien le deuxième cas alors c'est normal que ta liste reste inchangé dans la session puisque l'objet référencé reste inchangé.:D
-
...Oups! tu as raison, mon objet liste a subit une affectation liste=autreListe et du coup il ne référence plus le même objet que monObj. Quand on vient du procédural, l'objet il faut s'y adapter! Merci.
-
De rien n'oublie pas mettre le thread en résolu!