Bonjour,
j'ai un souci de comprendre le principe des objets immutables .
Je sais que : Wrapper objects are immutable.
mais je ne comprends le principe.
Merci d'avance.
Bonjour,
j'ai un souci de comprendre le principe des objets immutables .
Je sais que : Wrapper objects are immutable.
mais je ne comprends le principe.
Merci d'avance.
immutable = ne change pas!
c'est à dire il n y a pas des méthodes pour changer sa valeur?
Bonjour à tous,
Je me permet de réagir a ce post après un long moment deja
Quand vous dite d'utiliser au maximum des objets immutable,
comment traduisez vous cela dans l'implementation?
Comme vous le savez avec les librairies reactive sous divers technos, ce principe est deja assez utilisé et recommandé.
Peut alors quand même implementer tout de même le principe d'immutable en dehors de ce que font deja ces libraires ?
Quel en serait les avantages ou inconvénients ? peut-on en abuser également, est-ce recommander? Et dernière question quel sont les impacts sur les performances au niveau de l'application?
Merci en tout cas pour cette question Sun03![]()
Bonsoir,
Pour résumer, tu dois mettre toutes les limitations possibles pour que ton objet ne puisse pas changer d'état, ta classe ne doit pas avoir de setter (mutateurs) par exemple. Ta classe doit être final pour pas que d'autres classes puissent en hériter. Pense à mettre tous tes champs en private pour qu'ils ne soient pas accessibles de l'extérieur et final pour qu'ils soient bien tous initialisés à la constructeur de l'objet. Soit prudent avec certains getters qui retournent une List par exemple, on peut toujours faire un add avec et changer son état, tu peux retourner une copie de ces objets.Quand vous dite d'utiliser au maximum des objets immutable, comment traduisez vous cela dans l'implementation?
Cela présente l'avantage de pouvoir utiliser ces objets threadsafe sans crainte dans un contexte multithread. L'inconvénient est qu'il faut savoir quand appliquer le concept d'immutabilité sur une classe, ça peut être utile sur les types de base (les Wrappers Integer/Long/Double etc, BigInteger/BigDecimal, les dates, les valeurs monétaires). Cela peut aussi avoir des conséquences sur la mémoire alloué, tu vas créer de nouveaux objets à chaque changement d'état au lieu d'utiliser le même objet.Quel en serait les avantages ou inconvénients ? peut-on en abuser également, est-ce recommander? Et dernière question quel sont les impacts sur les performances au niveau de l'application?
A+
N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java
Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ?Contacter Gokan EKINCI
en bon français: immuables -> dont l'état ne change pas
ces objets ont par ailleurs un certain nombre d'avantages: pas d'effet de bord
(modification incontrolée de l'état), bonne prise en compte par des optimisations (pas de conflits d'accès), etc. Il est intéressant d'essayer de peupler ses applications avec ses propres objets immuables.
Le principe c'est que tu ne peux pas les modifier. Si tu changes la valeur d'un Long, en fait tu crées un nouveau Long (et si le premier Long avait été affecté à des variables, il leur reste affecté).
Partager