Simulating Pass by Reference in Java for Primitives
In C , pass by reference provides a direct reference to the original variable, allowing changes made within functions to be reflected in the calling scope. Java, on the other hand, exclusively employs pass by value for primitives, resulting in the creation of local copies.
To achieve a similar effect in Java, consider these approaches:
1. Pass by Reference Using Objects:
Encapsulate the primitive value within an object and pass a reference to it. The code can modify the object's member variable directly.
class Toy { public int toyNumber; } void play(Toy toy){ System.out.println("Toy number in play " + toy.toyNumber); toy.toyNumber++; System.out.println("Toy number in play after increment " + toy.toyNumber); }
2. Return the Modified Value:
Instead of trying to modify the argument, the function can return the modified value, which can then be assigned to the original variable.
int play(int toyNumber){ System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); return toyNumber }
3. Class/Static Member Variable:
If the functions belong to the same class or instance, consider storing the value in a class or static member variable, accessible to both functions.
4. Single-Element Array Hack:
Although considered a hack, passing a single-element array allows for an indirect way to modify the value in the calling scope.
void play(int[] toyNumber) { System.out.println("Toy number in play" + toyNumber[0]); toyNumber[0]++; System.out.println("Toy number in play after increment" + toyNumber[0]); }
The above is the detailed content of How Can I Simulate Pass by Reference for Primitives in Java?. For more information, please follow other related articles on the PHP Chinese website!