Clonage
Résolu/Fermé
amal-these
Messages postés
25
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
28 mai 2016
-
Modifié par KX le 3/06/2015 à 19:56
amal-these Messages postés 25 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 28 mai 2016 - 6 juin 2015 à 13:37
amal-these Messages postés 25 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 28 mai 2016 - 6 juin 2015 à 13:37
A voir également:
- Clonage
- Clonage disque dur - Guide
- Clonage ssd - Guide
- Macrium reflect clonage - Télécharger - Sauvegarde
- Ia clonage de voix - Accueil - Intelligence artificielle
- Clonage telephone - Télécharger - Gestion de fichiers
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
Modifié par KX le 3/06/2015 à 20:47
Modifié par KX le 3/06/2015 à 20:47
Bonjour,
"lorsque je modifie l'objet originale, le U et V de l'objet cloné reste inchangeable"
Pour U c'est normal, il faut également cloner chaque case U[i] puisque ce sont des objets aussi. Mais pour V ça fonctionne. Exemple :
Avec ton code j'ai bien modification de i1.V sans affecter i2.V
Remarque : si tu une CloneNotSupportedException dans la méthode clone tu dois être plus violent qu'une printStackTrace, car il est totalement exclu que ça arrive.La confiance n'exclut pas le contrôle
"lorsque je modifie l'objet originale, le U et V de l'objet cloné reste inchangeable"
Pour U c'est normal, il faut également cloner chaque case U[i] puisque ce sont des objets aussi. Mais pour V ça fonctionne. Exemple :
public static void main(String[] args) throws CloneNotSupportedException { Ind i1 = new Ind(); // initialisation de i1 for (int i=0; i<i1.V.length; i++) i1.V[i] = 1; // clonage de i1 Ind i2 = (Ind) i1.clone(); // alteration de i1 for (int i=0; i<i1.V.length; i++) i1.V[i] = 2; // affichage de i1 et i2 for (int i=0; i<i1.V.length; i++) System.out.println(i1.V[i]); // attendu 2 for (int i=0; i<i2.V.length; i++) System.out.println(i2.V[i]); // attendu 1 }
Avec ton code j'ai bien modification de i1.V sans affecter i2.V
Remarque : si tu une CloneNotSupportedException dans la méthode clone tu dois être plus violent qu'une printStackTrace, car il est totalement exclu que ça arrive.La confiance n'exclut pas le contrôle
4 juin 2015 à 02:03
je ne sais pas pourquoi vous avez traité la variable V car j'ai dit que j'ai pas de problèmes pour V et U mais weight ouiiiiiii cette variable est la seule qui ne conserve pas la valeur initiale clonée.
je vous remercie
4 juin 2015 à 07:00
V on est d'accord, mais pourtant U tu auras des problèmes...
Et si tu as des problèmes avec Vector c'est pour les même raisons que pour U.
Le clonage d'un double tableau ne clone que la première dimension, la deuxième doit être clonée à la main.
C'est une des raisons pour lesquelles on évite d'avoir des types paramétrés de type tableaux. oui, à la rigueur, mais non, c'est dangereux.
Remarque : Vector est une classe dépréciée. On devrait utiliser ArrayList à la place.
4 juin 2015 à 12:37
4 juin 2015 à 17:42
6 juin 2015 à 00:42
je vous remercie pour votre soutien.