Maison > Java > javaDidacticiel > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-16 07:46:02
original
801 Les gens l'ont consulté

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);   
}
Copier après la connexion

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
}
Copier après la connexion

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]);   
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal