Sono confuso nella seguente:
In C++ possiamo passare un parametro a una funzione per riferimento (avendo dichiarata come una variabile puntatore o riferimento) e se modificarlo all'interno funzione, le modifiche si riflettono sul chiamante quando la funzione ritorna.
Questo non sta accadendo in Java e non sono sicuro di aver capito perché.Java vs C++ passare riferimento
E.g. questo è un metodo da un oggetto X
public boolean aMethod(int id, myClass aClass)
{
//do some logic
aClass = new MyClass();
//configure argument object aClass
return true;
}
Nel codice chiamante:
//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
obj.methodA();//start using the object
}
lo uso in C++, cioè per restituire un risultato che notifica che il parametro funzione può essere utilizzata, ma in Java questo non funziona.
Inserisco il ramo if (X.aMethod (2, obj) ma l'oggetto è nullo. Perché è nulla?
Non ho assegnato un indirizzo di memoria dall'heap usando new all'interno del metodo aMethod (int id, myClass aClass)? Non sto passando "l'indirizzo" di obj nella funzione? Mi aspettavo di avere l'oggetto correttamente costruito e utilizzabile nel codice chiamante. Ho frainteso qualcosa riguardo alla memoria in Java?
possibile duplicato di [qual è la differenza tra il passaggio per riferimento e chiamata per riferimento?] (Http://stackoverflow.com/questions/3660180/what-is-the-difference-between-pass-by-reference-and-call-by-reference) –