Dévoilement des champs transitoires en Java : comprendre le contrôle de persistance
La sérialisation en Java implique la conversion de l'état d'un objet en un flux d'octets pour le stockage, permettant la recréation de l'objet ultérieurement. Cependant, certains champs peuvent ne pas être souhaitables pour persister, ce qui conduit à l'introduction de champs transitoires.
Champs transitoires : une définition
Champs transitoires, désignés par le "transient ", sont ceux qui ne doivent pas être inclus dans l'état sérialisé de l'objet. Cela signifie que lorsqu'un objet est sérialisé, ses champs transitoires seront ignorés.
Objectif des champs transitoires
Prenons l'exemple d'une classe GalleryImage qui stocke une image et une vignette :
class GalleryImage implements Serializable { private Image image; private transient Image thumbnailImage; }
La vignetteImage est dérivée de l'image et ne doit pas être stockée à côté de l'image originale. Le marquer comme transitoire empêche sa sérialisation. Cela optimise l'espace de stockage et élimine le risque d'erreurs de sérialisation.
Désérialisation et champs transitoires
Lors de la désérialisation, l'état de l'objet est restauré à ce qu'il était au moment de la désérialisation. sérialisation. Toutefois, dans le cas de champs transitoires, ils ne sont pas restaurés automatiquement. Par exemple, dans la classe GalleryImage, thumbnailImage est toujours nulle après la désérialisation. Pour contourner ce problème, la méthode readObject peut être remplacée pour générer l'image miniature par programme :
private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException { inputStream.defaultReadObject(); generateThumbnail(); }
Avantages des champs transitoires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!