Maison > Java > javaDidacticiel > le corps du texte

Pourquoi les paramètres de méthode sont-ils rarement marqués « final » en Java ?

Barbara Streisand
Libérer: 2024-11-22 07:11:21
original
420 Les gens l'ont consulté

Why are method parameters rarely marked `final` in Java?

Pourquoi ne pas utiliser final sur les paramètres de méthode ?

Le mot-clé final sur les paramètres de méthode a une utilité limitée.

Aucun effet sur les paramètres primitifs

Lorsqu'un type primitif est utilisé comme paramètre de méthode, le marquer comme final n'a aucun effet. Les paramètres primitifs sont transmis par valeur, ce qui signifie que toute modification apportée à la valeur dans la méthode n'est pas reflétée en dehors de la méthode.

Effet limité sur les paramètres non primitifs

Pour les paramètres non primitifs ( objets), les marquer comme final empêche la méthode de réattribuer une nouvelle référence au paramètre. Cependant, l'objet lui-même peut toujours être modifié.

Contre-exemple

L'exemple suivant illustre ces limitations :

public void changeParameter(Collection<Integer> c) {
    c = new ArrayList<>(); // Can't assign a new reference
    c.add(5); // Mutating the object is still possible
}
Copier après la connexion

Même si c est marqué final, la méthode modifie la collection référencée par c.

Pourquoi utiliser final sur les paramètres de méthode ?

Malgré ces Malgré ces limitations, le marquage des paramètres comme final présente un avantage clé : cela empêche la méthode de réaffecter accidentellement le paramètre à un autre objet. Cela peut aider à éviter les erreurs lorsque la méthode s'appuie sur l'objet référencé par le paramètre.

Recommandation

En général, il est recommandé de marquer les paramètres de la méthode comme finaux, sauf s'il y a une raison spécifique de ne pas le faire. Cela améliore la lisibilité et évite les erreurs accidentelles. Cependant, il est important d'être conscient des limites de final lorsqu'il est utilisé avec des paramètres non primitifs.

Le cas immuable

Dans un cas important, il est essentiel de marquer les paramètres final : lorsque la méthode garantit que l'objet référencé par le paramètre ne sera pas modifié. Cette assurance peut être obtenue lorsque l’objet est immuable, ce qui signifie que son état ne peut pas être modifié. Par exemple :

public void processImmutableObject(final ImmutableClass obj) {
    // obj's state will not change
}
Copier après la connexion

Dans ce scénario, marquer obj final empêche la méthode de modifier accidentellement l'objet.

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