Как сделать эквивалент передачи по ссылке для примитивов в Java

Этот код 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);   
    }   
}  

выведет следующее:

 
Toy number in play 5  
Toy number in play after increement 6  
Toy number in main 5  

В C ++ я могу передать переменную toyNumber в качестве передачи по ссылке, чтобы избежать затенения, т.е. создание копии той же переменной, что и ниже:

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;   
} 

, а вывод C ++ будет следующим:

Toy number in play 5  
Toy number in play after increement 6  
Toy number in main 6  

Мой вопрос: какой эквивалентный код в Java дает тот же результат, что и код C ++, учитывая, что Java передается по значению, а не по ссылке ?

111
задан Community 23 May 2017 в 11:54
поделиться