Je suis débutant, mais je l'ai résumé pour une étude personnelle
-La valeur du champ une fois définie dans l'objet est appelée ** objet mutable ** pour l'objet qui peut être modifié ultérieurement, et ** immuable ** pour l'objet qui ne peut pas être modifié.
-Les instances de la ** classe java.lang.String ** et de la ** classe java.io.File ** sont des exemples typiques d'objets immuables. La valeur ne peut pas être modifiée ultérieurement Si vous voulez gérer une nouvelle valeur, vous devez créer une nouvelle instance, mais ** "changer la valeur de la variable (référence à l'objet)" **, pas ** "changer l'état de l'objet" ** Non, tu devrais comprendre la différence
-Pour définir un objet immuable: (1) Ne fournissez pas de méthode qui peut changer l'état interne d'un objet (** méthode setter , etc.) (2) ** Déclarez la classe avec final ** et garantissez qu'aucune méthode n'est remplacée (empêche les changements d'état des sous-classes) ③ ** Définissez tous les champs avec "private final" ** ("final" n'est pas obligatoire, mais vous pouvez déclarer plus explicitement qu'il s'agit d'une classe immuable) (4) Si un objet variable est maintenu à l'intérieur, cet objet n'est pas fourni à l'extérieur. ( méthode getter **, etc.) De plus, ne modifiez pas la valeur de l'objet variable en interne.