Comment laimmutabilité est-elle assurée en Java?
sobes.tech IA
Réponse de l'IA
L'immuabilité en Java est assurée par les moyens suivants :
-
Déclarer la classe comme
final: La classe ne peut pas être héritée, ce qui empêche la création de sous-classes mutables. -
Déclarer tous les champs comme
final: La valeur du champ ne peut être assignée qu'une seule fois (lors de l'initialisation ou dans le constructeur) et ne peut pas être modifiée après la création de l'objet. -
Privacité des champs : Les champs doivent être privés (
private) pour empêcher l'accès direct et la modification des valeurs depuis l'extérieur de la classe. -
Absence de setters ou de méthodes modifiant l'état de l'objet : La classe ne doit pas fournir de méthodes publiques qui pourraient modifier les valeurs des champs après leur création.
-
Gestion correcte des champs mutables : Si la classe contient des références à des objets mutables (par exemple,
Listou une classe mutable propre), il est nécessaire :- de créer des copies lors de l'initialisation (dans le constructeur),
- de retourner des copies dans les getters pour éviter de modifier les états internes de l'objet depuis l'extérieur.
public final class ImmutableExample { // classe finale
private final String name; // champ final et privé
private final List<String> items; // champ final et privé
public ImmutableExample(String name, List<String> items) {
this.name = name;
// Créer une copie protégée de la liste mutable
this.items = new ArrayList<>(items);
}
public String getName() {
return name;
}
public List<String> getItems() {
// Retourner une copie protégée de la liste mutable
return Collections.unmodifiableList(new ArrayList<>(items));
}
// Absence de setters ou de méthodes modifiant l'état
}
Exemples de classes immuables intégrées en Java : String, classes wrapper des types primitifs (Integer, Long, etc.), BigInteger, BigDecimal.