


Comment pouvons-nous réaliser un échange de valeur en Java sans passage par référence ?
L'absence de passage par référence en Java : réaliser des échanges en Java
L'une des bizarreries de la programmation Java est l'absence de passage par référence. passage de paramètres par référence. Cela peut être un obstacle lorsque l'on tente d'échanger les valeurs de deux variables primitives, comme le démontre la fonction suivante :
<code class="java">void swap(int a, int b) { int temp = a; a = b; b = temp; }</code>
Malheureusement, cette fonction n'obtiendra pas l'effet souhaité, car les modifications apportées à a et b dans la fonction ne sera pas propagé au code appelant puisque les paramètres Java sont transmis par valeur.
Une solution : échange de proxy via les valeurs de retour
Malgré le faute de passage par référence, il est toujours possible d'obtenir un comportement d'échange en Java. Une approche consiste à utiliser des valeurs de retour pour faciliter l'échange de proxy. Considérez le code suivant :
<code class="java">int swap(int a, int b) { // usage: y = swap(x, x=y); return a; } y = swap(x, x=y);</code>
Dans cet exemple, swap renvoie a et l'attribue à y. Simultanément, x est réaffecté à y, réalisant ainsi un échange via la propagation de la valeur de retour.
Échange de proxy générique pour les objets
L'approche d'échange de proxy peut être étendue pour travailler avec n'importe quel nombre d'objets du même type :
<code class="java"><T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z); return args[0]; } c = swap(a, a=b, b=c);</code>
Cette fonction d'échange générique renvoie le premier argument et l'assigne à la dernière variable de la liste d'arguments, effectuant efficacement plusieurs échanges en un seul appel de fonction .
Bien que ces techniques fournissent des solutions de contournement au manque de passage par référence en Java, il est important d'être conscient de leur indirection et du risque de confusion lorsque vous travaillez avec des types de données qui ne sont pas des types primitifs.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Explication détaillée de la conception des tables SKU et SPU sur les plates-formes de commerce électronique Cet article discutera des problèmes de conception de la base de données de SKU et SPU dans les plateformes de commerce électronique, en particulier comment gérer les ventes définies par l'utilisateur ...

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...
