Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

orobleme de reference

5 réponses
Avatar
dark poulpo
bonjour, voila jai un probleme (evidemment)

jai :

class data
{
...
}

class A {
static void change(data a, data b)
{
...
if (....) D=new data();
else C = new data();
...
}

static void progy()
{
data A = new data();
data B = new data();
change(A,B);
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii????? je
croyais que cetait des references d'objet? (lequivalent de pointeur en c++)
*** comment puis je regler le probleme? ***
}
}


merci d'avance
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************

5 réponses

Avatar
dark poulpo
desolé ya une erreur ans la description !!!!

il faut lire:

static void change(data a, data b)
{
...
if (....) a=new data();
else b = new data();
...
}



--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gij$fue$
bonjour, voila jai un probleme (evidemment)

jai :

class data
{
...
}

class A {
static void change(data a, data b)
{
...
if (....) D=new data();
else C = new data();
...
}

static void progy()
{
data A = new data();
data B = new data();
change(A,B);
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii????? je
croyais que cetait des references d'objet? (lequivalent de pointeur en
c++)

*** comment puis je regler le probleme? ***
}
}


merci d'avance
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************




Avatar
dark poulpo
autre chose, je ne risque pas de fuite de memoire de l'ancienne allocation
qui a été changé?

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gmh$g1l$
desolé ya une erreur ans la description !!!!

il faut lire:

static void change(data a, data b)
{
...
if (....) a=new data();
else b = new data();
...
}



--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gij$fue$
bonjour, voila jai un probleme (evidemment)

jai :

class data
{
...
}

class A {
static void change(data a, data b)
{
...
if (....) D=new data();
else C = new data();
...
}

static void progy()
{
data A = new data();
data B = new data();
change(A,B);
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii?????
je


croyais que cetait des references d'objet? (lequivalent de pointeur en
c++)

*** comment puis je regler le probleme? ***
}
}


merci d'avance
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************








Avatar
Farid
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii?????
je


croyais que cetait des references d'objet? (lequivalent de pointeur en
c++)




pour changer le contenu, oui, mais pas le contenant !

*** comment puis je regler le probleme? ***




passer un object (appellons le X) qui contient a et b, et changer les
objects a et b contenu dans X.
soit via des methodes set...() definie dans X, soit en definisant a et b
comme public dans X (enfin a deconseiller, mais bon suivant le cas...)

autre chose, je ne risque pas de fuite de memoire de l'ancienne allocation
qui a été changé?


nope, le GC detectera que les anciens objects ne sont references nulle part,
et les retira de la ram, quand il "collectera" ...


Farid.



Avatar
Cédric Chabanois
Tu poses beaucoup de questions de débutant ....

Pourquoi ne pas lire quelques docs :
- Thinking in Java : pdf gratuit
http://java.developpez.com/livres/penserenjava/
- développons en Java de JM doudoux
http://perso.wanadoo.fr/jm.doudoux/


Enfin pour répondre à ta question :
les paramètres sont passés par valeur, ie la référence vers l'objet est
recopiée.
Donc quand tu fais a = new data(); => tu crées bien un nouvel objet mais
l'appelant ne le verra pas (en fait il va être garbage collecté
parceque personne n'a de référence sur lui).
Par contre si tu modifies les attributs de a dans change, l'appelant le
verra bien sûr.

Enfin je te signale que c'est la même chose en C++ ou en C.

Donc on ne fait pas çà. Et puis là tu travailles comme en C, tu n'as que
des méthodes statiques.



Cédric

autre chose, je ne risque pas de fuite de memoire de l'ancienne allocation
qui a été changé?

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gmh$g1l$

desolé ya une erreur ans la description !!!!

il faut lire:

static void change(data a, data b)
{
...
if (....) a=new data();
else b = new data();
...
}



--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gij$fue$

bonjour, voila jai un probleme (evidemment)

jai :

class data
{
...
}

class A {
static void change(data a, data b)
{
...
if (....) D=new data();
else C = new data();
...
}

static void progy()
{
data A = new data();
data B = new data();
change(A,B);
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii?????



je

croyais que cetait des references d'objet? (lequivalent de pointeur en


c++)

*** comment puis je regler le probleme? ***
}
}


merci d'avance
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************












Avatar
dark poulpo
ayé, jai resolu le probleme, merci encore, jai fais une classe intermediaire
qui me sert de pointeur de pointeur;

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"dark poulpo" a écrit dans le message news:
cd5gij$fue$
bonjour, voila jai un probleme (evidemment)

jai :

class data
{
...
}

class A {
static void change(data a, data b)
{
...
if (....) D=new data();
else C = new data();
...
}

static void progy()
{
data A = new data();
data B = new data();
change(A,B);
****** ici ni A ni B sont changé par C ou D pourquoiiiiiiiiiii????? je
croyais que cetait des references d'objet? (lequivalent de pointeur en
c++)

*** comment puis je regler le probleme? ***
}
}


merci d'avance
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************