Maison > développement back-end > C++ > Java prend-il en charge le passage par référence, et sinon, comment peut-il être simulé ?

Java prend-il en charge le passage par référence, et sinon, comment peut-il être simulé ?

Barbara Streisand
Libérer: 2024-12-29 15:17:11
original
654 Les gens l'ont consulté

Does Java Support Pass-by-Reference, and If Not, How Can It Be Simulated?

Passer des paramètres par référence en Java : est-ce possible ?

Bien que Java n'ait pas de mot-clé ref explicite comme C#, il est important de comprenez que les paramètres sont toujours transmis par valeur. Cependant, lors du passage de paramètres type de référence (par exemple, des objets), une référence à l'objet lui-même est transmise, imitant efficacement le comportement de passage par référence.

Pass-by -Valeur par rapport au passage par référence apparent :

Considérez ce qui suit code :

Object o = "Hello";
mutate(o);
System.out.println(o);

private void mutate(Object o) { o = "Goodbye"; }
Copier après la connexion

Ce code affichera "Bonjour" sur la console, démontrant que la valeur de référence de l'objet reste inchangée. En effet, Java transmet les types primitifs et les références aux objets par valeur.

Réalisation de la sémantique de passage par référence :

Pour véritablement transmettre un objet par référence, permettant des modifications dans une méthode qui doit être reflétée dans le code appelant, vous devez utiliser une référence explicite, comme démontré ci-dessous :

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); // Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
Copier après la connexion

Ce code s'imprimera "Au revoir" à la console, indiquant que la référence elle-même a été modifiée et que les modifications ont été propagées au code appelant.

Conclusion :

Java ne prend pas automatiquement en charge passage par référence pour les paramètres. Cependant, en utilisant des références et des constructions explicites comme AtomicReference, vous pouvez obtenir une sémantique similaire et modifier les objets sous-jacents par référence, imitant efficacement le comportement de passage par référence.

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