Maison >Java >javaDidacticiel >Comment puis-je simuler le passage par référence pour les primitives en Java ?

Comment puis-je simuler le passage par référence pour les primitives en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 07:46:02888parcourir

How Can I Simulate Pass by Reference for Primitives in Java?

Simulation du passage par référence en Java pour les primitives

En C, le passage par référence fournit une référence directe à la variable d'origine, permettant les modifications apportées dans les fonctions à refléter dans la portée appelante. Java, en revanche, utilise exclusivement le passage par valeur pour les primitives, ce qui entraîne la création de copies locales.

Pour obtenir un effet similaire en Java, envisagez ces approches :

1. Passer par référence à l'aide d'objets :
Encapsulez la valeur primitive dans un objet et transmettez-lui une référence. Le code peut modifier directement la variable membre de l'objet.

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. Renvoie la valeur modifiée :
Au lieu d'essayer de modifier l'argument, la fonction peut renvoyer la valeur modifiée, qui peut ensuite être affectée à la variable d'origine.

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 . Classe/Variable membre statique :
Si les fonctions appartiennent à la même classe ou instance, envisagez de stocker la valeur dans une classe ou une variable membre statique, accessible aux deux fonctions.

4 . Hack de tableau à élément unique :
Bien que considéré comme un hack, le passage d'un tableau à élément unique permet de modifier indirectement la valeur dans la portée appelante.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn