Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2350 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Copier les questions du constructeur sur Java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Copier les questions du constructeur sur Java

n°2438498
joun17
be cool
Posté le 20-01-2023 à 07:06:13  profilanswer
 

J'ai une question sur la construction de copie en Java. Considérez la classe suivante;
 
Dans le constructeur de copie, je peux dire new(Integer(other.id)) pour obtenir un nouvel objet entier transmis au constructeur, mais je ne peux pas dire new T(other.data) car le compilateur dira qu'il ne peut pas instancier le type T. Comment puis-je m'assurer que lorsque l'élément générique est construit par copie, il ne transmettra pas simplement une référence telle que les 2 objets partageront les données sous-jacentes.
 
De plus, dans la méthode getLinks, il fait un nouveau et crée un nouvel objet de la liste, mais est-ce que cela va copier en profondeur et créer un nouvel objet des éléments contenus dans la liste ou contiendra-t-il simplement des références aux éléments de liste d'objets existants tels que que vous avez 2 listes pointant toutes les deux vers les mêmes données. Voir ci-dessous les commentaires / code. Merci d'avance pour votre expertise.
 
 

Code :
  1. class DigraphNode<T> 
  2. {
  3.     Integer id;
  4.     T data;
  5.     ArrayList<DigraphNode<T> > links;
  6.     public DigraphNode(Integer i)
  7.     {
  8.         id = i;
  9.         links = new ArrayList<DigraphNode<T> >();
  10.     }
  11.     public DigraphNode(Integer i, T d)
  12.     {
  13.         id = i; data = d;
  14.         links = new ArrayList<DigraphNode<T> >();
  15.     }
  16.     public DigraphNode(DigraphNode<T> other)
  17.     {
  18.         other.id = new Integer(other.id);
  19.         other.data = other.data; // line in question
  20.         this.links=other.getLinks(); // also will create a new list with references
  21.                                      // or will it deep copy the items contained in the list?
  22.                                      // see getLinks() method below
  23.     }
  24.     public void setData (T d ) { data =  d; }
  25.     public void addLink (DigraphNode<T> n) { links.add(n); }
  26.     public void addLinks (ArrayList<DigraphNode<T> > ns) { links.addAll(ns); }
  27.     public ArrayList<DigraphNode<T> > getLinks()
  28.     {
  29.         return new ArrayList<DigraphNode<T> >(links);
  30.     }
  31.     public void printNode()
  32.     {
  33.         System.out.print("Id: " + id + " links: " );
  34.         for ( DigraphNode<T> i : links )
  35.         {
  36.             System.out.print(i.id + " " );
  37.         }
  38.         System.out.println();
  39.     }
  40. }

mood
Publicité
Posté le 20-01-2023 à 07:06:13  profilanswer
 

n°2438499
el muchach​o
Comfortably Numb
Posté le 20-01-2023 à 08:50:43  profilanswer
 

Tu dois écrire un constructeur de/par copie (copy constructor en anglais).
 
https://www.youtube.com/watch?v=6tjxxgxMwdI
 
Je te conseille d'apprendre convenablement les bases, parce que la question que tu poses fait partie des bases essentielles du langage. Procure-toi un vrai cours de Java. Un bouquin complet est "Penser en Java" de Bruce Eckel.

n°2438868
joun17
be cool
Posté le 24-01-2023 à 13:01:16  profilanswer
 

oui ok merci pour ton aide

n°2440149
Favien
Posté le 10-02-2023 à 16:53:37  profilanswer
 

Avec le lien ci-dessous, tu peux apprendre les bases du langage Java
https://www.data-transitionnumeriqu [...] oi_sert-il


Message édité par Favien le 10-02-2023 à 16:55:36

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Copier les questions du constructeur sur Java

 

Sujets relatifs
Problèmes de conversion Java du binaire au décimal (tableaux)Java est égal à () sélection
copier/coller colonne activeimporter le code en Java fait par StarUml dans eclipse
copier un répertoire distant entre 2 machines virtuelle(client -serve)Duree d'execution programme java
Encodage RSA Javascript Vs Javamise à jour java et problème de résolution
[Vue.js] Questions sur le framework en généralAndroid java quelle application tourne au premier plan ?
Plus de sujets relatifs à : Copier les questions du constructeur sur Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR