Que sont les objets mutables/immuables et à quoi servent-ils ?  - 1

« Salut Amigo ! »

"Salut, Bilaabo !"

"Aujourd'hui, Bilaabo vous parlera des objets mutables et immuables .

"Les objets que vous pouvez modifier après leur création sont appelés mutable ."

"Les objets qui ne peuvent pas être modifiés après leur création sont appelés immuables ."

« Qu'est-ce qui détermine si je peux modifier un objet ? »

"L'auteur d'une nouvelle classe peut rendre les objets de cette classe immuables. Par exemple, si vous rendez tous les setters privés, alors un objet n'aura qu'un constructeur et des getters ; cela signifie qu'il sera impossible de le changer après sa création. ."

« Et à quoi cela servirait-il ?

"Les objets immuables ont de nombreuses propriétés utiles, mais j'en soulignerai deux qui sont communes à presque tous les objets immuables :"

1) Les objets immuables sont beaucoup plus faciles à implémenter que les objets mutables.

2) Les objets immuables peuvent être utilisés librement sur plusieurs threads simultanément.

"Lorsqu'un développeur décide d'écrire une classe immuable, il crée généralement une version mutable et immuable de la classe."

"Mais à quoi ça sert d'écrire deux classes au lieu d'une ?"

"Parfois, cela en vaut la peine lorsqu'une version immuable d'un objet sera beaucoup plus simple/plus rapide qu'une version mutable. Donc, ils font deux versions. C'est un peu comme ArrayList et LinkedList : les deux sont des listes, mais l'une est optimisée à des fins spécifiques, et le second pour les autres."

"Cela a déjà plus de sens."

"Il existe également des classes purement immuables, qui n'ont pas de version mutable."

"Mais que se passe-t-il si j'ai besoin de changer quelque chose dans l'un de ces objets ? Que pouvez-vous réellement faire avec un objet immuable ?"

"Habituellement, les classes immuables contiennent diverses méthodes qui agissent comme si elles changeaient l'objet, mais ces méthodes créent simplement un nouvel objet et le renvoient, au lieu de changer l'objet lui-même."

"Voici quelques exemples:"

Code Java Description
String s = "london";
String s2 = s.toUpperCase();
Par conséquent, s contient la chaîne «london» et s2 contient «LONDON»
Integer i = 1;
Integer j = i;
j++;
Voici ce qui se passe réellement :
Integer i = new Integer(1);
Entier j = i ;
j = new Integer(i.getInt()+1);

"La classe String est une classe immuable. Tous les objets String sont immuables, mais cela ne nous empêche pas de travailler avec eux. Par exemple, la méthode toUpperCase () de la classe String convertit une chaîne en majuscule (c'est-à-dire remplace toutes les lettres minuscules avec des majuscules). Cependant, cette méthode ne change pas la chaîne elle-même, mais renvoie une nouvelle chaîne. Cette nouvelle chaîne est identique à la première sauf que tous les caractères sont en majuscules (lettres majuscules)."

"La classe Integer est également une classe immuable. Tous les objets Integer sont immuables. Chaque fois que nous modifions un objet Integer, nous créons en fait un nouvel objet."

« Comme c'est intéressant ! Hourra, Bilaabo.

« Hourra pour moi ! Hourra pour Bilaabo !