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