Sobes.tech
Junior — Middle

Peut-on modifier la valeur d'une variable déclarée comme effectively final à l'intérieur d'un objet?

sobes.tech IA

Réponse de l'IA

En Java, le terme "effectively final" signifie que la variable n'a pas été modifiée après son initialisation, même si elle n'est pas explicitement déclarée avec le mot-clé final. Cela est important, par exemple, pour utiliser ces variables dans des expressions lambda ou des classes anonymes.

Si une variable est déclarée comme effectively final, sa valeur ne peut pas être modifiée : tenter de lui assigner une nouvelle valeur entraînera une erreur de compilation.

Cependant, si cette variable fait référence à un objet, l'état de cet objet peut être modifié, car ce qui change, ce n'est pas la référence, mais les champs internes de l'objet. Par exemple :

final List<String> list = new ArrayList<>();
list.add("nouvel élément");  // C'est autorisé

// list = new ArrayList<>();  // Erreur, on ne peut pas changer la référence

Ainsi, la valeur de la variable (la référence) ne peut pas être modifiée, mais le contenu de l'objet auquel elle fait référence peut être modifié.