Bonjour,
Je souhaite créer deux objets de même type, initialisés tous les deux par un troisième objet de même type en paramètre. Voici le code de mon constructeur:
Ensuite, je souhaite modifier un attribut par l'appel d'un "setter" sur l'un des deux objets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private SupplyChain sc; private SupplyChain sc2; private int demand; private int fluct_demand; public SimulatedScenario(SupplyChain sc) { this.sc = new SupplyChain(); this.sc2 = new SupplyChain(); this.sc = sc; this.sc2 = sc; demand = (Integer) sc.getSegmentoMercato().getDomanda(); }
Or, je me rends compte que la valeur en question est aussi modifiée sur l'autre objet de même type, chose que je ne veux pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void computeVarOptimumMarket(int market_state, int[] coalition){ ... //compute current optimum point current_optimum = new OttimoCosti(sc, coalition); current_optimum.calcolaOttimo(); current_optimum.calcolaOttimiTotali(); //sc2 = sc with new demand sc2 = sc; sc2.getSegmentoMercato().setDomanda(fluct_demand); //compute new_optimum point for new demand new_optimum = new OttimoCosti(sc2, coalition); new_optimum.calcolaOttimo(); new_optimum.calcolaOttimiTotali(); ... }
J'ai remarqué que les ID de mes deux objets changeaient lorsque que j'écris
et prennent tous deux le même ID que l'objet en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.sc = sc; this.sc2 = sc;
Comment puis-je contourner ce problème ? L'objectif étant s'initialiser les deux objets sc et sc2 avec les mêmes valeurs que l'objet en paramètre pour ensuite changer certaines valeurs de l'objet sc2 sans modifier celles de sc.
Cordialement,
Tehko
Partager