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
Barbara Streisandoriginal
2024-12-29 15:17:11657parcourir

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

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

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!

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