Junior
Qu'est-ce que les objets immuables?
sobes.tech IA
Réponse de l'IA
Objets dont l'état ne peut pas être modifié après leur création. Toute tentative de modification entraîne la création d'un nouvel objet.
Exemples de classes immuables en Java :
String- Wrappers primitifs (
Integer,Long,Boolean, etc.) - Certaines collections (
Collections.unmodifiableList(),ImmutableListde Guava)
Avantages :
- Sécurité thread-safe (pas besoin de synchronisation en accès concurrent).
- Facilité d'utilisation (état de l'objet facile à comprendre).
- Peuvent être utilisées comme clés dans HashMap ou éléments dans Set (leur hashCode et equals() ne changent pas).
- Améliorent la performance grâce au caching et à la réutilisation.
Inconvénients :
- La création d'un nouvel objet à chaque modification peut être inefficace pour des changements fréquents.
Création personnelle :
- Déclarer la classe comme
final. - Déclarer tous les champs comme privés et
final. - Ne pas fournir de méthodes setters.
- Dans les getters pour les champs mutables, retourner des copies plutôt que des références aux objets originaux.
public final class ImmutablePerson {
private final String name;
private final int age;
private final List<String> hobbies;
public ImmutablePerson(String name, int age, List<String> hobbies) {
this.name = name;
this.age = age;
// Créer une copie pour éviter les modifications externes
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Retourner une liste non modifiable
return Collections.unmodifiableList(hobbies);
}
}