Este código Java:
public class XYZ {
public static void main(){
int toyNumber = 5;
XYZ temp = new XYZ();
temp.play(toyNumber);
System.out.println("Toy number in main " + toyNumber);
}
void play(int toyNumber){
System.out.println("Toy number in play " + toyNumber);
toyNumber++;
System.out.println("Toy number in play after increement " + toyNumber);
}
}
generará esto:
Número de juguete en juego 5 Número de juguete en juego después del incremento 6 Número de juguete en el principal 5
En C ++ puedo pasar la toyNumber
variable como pasar por referencia para evitar el sombreado, es decir, crear una copia de la misma variable que se muestra a continuación:
void main(){
int toyNumber = 5;
play(toyNumber);
cout << "Toy number in main " << toyNumber << endl;
}
void play(int &toyNumber){
cout << "Toy number in play " << toyNumber << endl;
toyNumber++;
cout << "Toy number in play after increement " << toyNumber << endl;
}
y la salida de C ++ será esta:
Número de juguete en juego 5 Número de juguete en juego después del incremento 6 Número de juguete principal 6
Mi pregunta es: ¿cuál es el código equivalente en Java para obtener el mismo resultado que el código C ++, dado que Java se pasa por valor en lugar de pasar por referencia ?
toyNumber
variable declarada en el main
método no está dentro del alcance del play
método. El sombreado en C ++ y Java solo ocurre cuando hay anidación de ámbitos. Consulte en.wikipedia.org/wiki/Variable_shadowing .