Cela dépend exactement de ce que vous demandez. Si vous voulez juste récupérer une valeur différente de celle que vous avez ajoutée, alors oui, vous pouvez le faire grâce à la sérialisation. Les données sérialisées sont complètement détachées de l'instance de A
qui existe en mémoire. Lorsque Java reconstruit un objet à partir des données sérialisées, il ne sait rien de l'instance d'origine A
utilisée pour créer ces données. Il s'agit simplement de construire une structure de données en mémoire basée sur le plan fourni dans l'information sérialisée. Par conséquent, si vous souhaitez modifier ce que vous obtenez lorsque vous reconstruisez A
, vous pouvez le faire en modifiant manuellement les données sérialisées binaires. Cela nécessitera une bonne compréhension du format de sérialisation de Java, mais cela peut certainement être fait. Bien que si vous demandez s'il existe un moyen de modifier l'instance originale de A
via la sérialisation (comme dans, pour obtenir le même objet pour changer de valeur, sans construire une nouvelle instance via la désérialisation), alors la réponse est non, vous ne pouvez pas. La sérialisation crée simplement un instantané de l'état actuel de l'objet. La désérialisation crée une nouvelle instance d'objet complètement détachée de l'instance source. Donc, bien que vous puissiez changer manuellement la valeur, le nouvel objet avec la nouvelle valeur sera toujours immuable une fois qu'il a été désérialisé.
Et si vous demandez s'il existe un moyen de sérialiser une instance de classe immutable A
puis de désérialiser les données comme quelque chose qui s'identifie comme une instance de classe A
mais s'avère être mutable alors la réponse est également non. Les données sérialisées spécifient quelle classe d'objet est représentée, mais la définition de classe elle-même n'est pas sérialisée. Vous pouvez donc modifier la classe spécifiée pour sérialiser une instance de A
, puis désérialiser une instance de la classe modifiable B
, mais ce n'est pas la même chose que récupérer une instance mutable de A
.