je suis confus dans ce qui suit:
en C++ on peut passer un paramètre à une fonction de référence (ayant déclaré comme un pointeur ou d'une variable de référence) et si l'on modifie à l'intérieur du fonction, les modifications sont répercutées sur l'appelant lorsque la fonction retourne.
Cela ne se passe pas dans Java et je ne suis pas sûr de comprendre pourquoi.java vs C++ passer par référence
E.g. ceci est un procédé à partir d'un objet X
public boolean aMethod(int id, myClass aClass)
{
//do some logic
aClass = new MyClass();
//configure argument object aClass
return true;
}
Dans le code d'appel:
//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
obj.methodA();//start using the object
}
Je l'utilise en C++, soit pour renvoyer un résultat qui informe que peut être utilisé le paramètre de fonction, mais en Java cela ne fonctionne pas.
J'entre la branche if (X.aMethod (2, obj)) mais l'obj est nul. Pourquoi est-ce nul?
N'ai-je pas assigné une adresse mémoire du tas en utilisant new à l'intérieur de la méthode aMethod (int id, myClass aClass)? Est-ce que je ne passe pas "l'adresse" d'obj dans la fonction? Je m'attendais à avoir l'obj correctement construit et utilisable dans le code appelant. Ai-je mal compris quelque chose concernant la mémoire dans Java?
de double possible de [quelle est la différence entre passer par référence et appel par référence?] (Http://stackoverflow.com/questions/3660180/what-is-the-difference-between-pass-by-reference-and-call-by-reference) –