Sérialisation d'objets en Java

La sérialisation d'objets est un mécanisme essentiel dans la programmation Java, permettant de convertir des objets en une séquence d'octets, qui peuvent ensuite être stockés dans des fichiers, transmis sur des réseaux ou simplement conservés en mémoire pour une utilisation ultérieure. Le processus inverse, appelé désérialisation, reconstitue l'objet à partir de cette séquence d'octets.

Pourquoi sérialiser des objets ?

La sérialisation des objets est utile dans plusieurs situations, telles que :

  • Enregistrer l'état d'un objet pour une utilisation ultérieure.
  • Envoyez des objets sur un réseau dans des applications distribuées.
  • Stockez les objets dans des bases de données, en les convertissant en tableaux d'octets.

Comment sérialiser des objets en Java

En Java, un objet est sérialisable si sa classe implémente l'interface java.io.Seriallessly. Cette interface est une interface de balisage, c'est-à-dire qu'elle n'a pas de méthodes à implémenter, mais elle indique à la JVM que les objets de cette classe sont activés pour la sérialisation.

importer java.io.Serialisisable ; classe publique ObjectExample implémente Serialisable { privé statique final long serialVersionUID = 1L ; attribut de chaîne privé ; // Constructeurs, getters et setters }

Le champ serialVersionUID est un identifiant unique pour la classe sérialisable, qui est utilisé lors de la désérialisation pour garantir que la classe chargée est compatible avec la version sérialisée de l'objet.

Pour sérialiser un objet, vous pouvez utiliser ObjectOutputStream, qui est un wrapper pour un flux de sortie prenant en charge la sérialisation d'objet.

importer java.io.FileOutputStream ; importer java.io.ObjectOutputStream ; Sérialiseur de classe publique { public static void sérialiser (StringFilePath, ExempleObjectObject) { essayez (ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream (Filepath))) { oos.writeObject(objet); } attraper (Exception e) { e.printStackTrace(); } } }

Désérialisation d'objet

Pour désérialiser, vous utilisez ObjectInputStream, qui peut lire la séquence d'octets d'un flux d'entrée et reconstruire l'objet.

importer java.io.FileInputStream ; importer java.io.ObjectInputStream ; Désérialiseur de classe publique { public static ExempleObject désérialise (StringFilePath) { Objet ExempleObject = null ; try (ObjectInputStream ois = new ObjectInputStream (new FileInputStream (Filepath))) { object = (ExampleObject) ois.readObject(); } attraper (Exception e) { e.printStackTrace(); } renvoyer l'objet ; } }

Considérations importantes

Lorsque vous travaillez avec la sérialisation, plusieurs considérations doivent être prises en compte :

  • Sécurité : la sérialisation peut être un vecteur d'attaque si les données ne sont pas correctement validées lors de la désérialisation.
  • Compatibilité des versions : les modifications apportées à la classe sérialisée peuvent rendre les versions précédentes incompatibles à moins d'être gérées avec soin.
  • Champs transitoires : les champs marqués avec le mot-clé transient ne sont pas sérialisés. Ceci est utile pour les données sensibles ou pour éviter une sérialisation inutile.

Sérialisation personnalisée

Dans les cas où vous avez besoin d'un contrôle plus précis sur le processus de sérialisation, vous pouvez implémenter les méthodes writeObject et readObject dans votre classe :

importer java.io.ObjectOutputStream ; importer java.io.ObjectInputStream ; la classe publique CustomObjectExample implémente Serialisable { attribut de chaîne transitoire privéNaoSerializado ; private void writeObject (ObjectOutputStream oos) lance IOException { oos.defaultWriteObject(); // Code personnalisé pour sérialiser l'attributNaoSerializado } private void readObject (ObjectInputStream ois) lance IOException, ClassNotFoundException { ois.defaultReadObject(); // Code personnalisé pour désérialiser l'attributNaoSerializado } }

Ces méthodes vous permettent d'ajouter une logique supplémentaire lors de la sérialisation et de la désérialisation, comme le chiffrement de données sensibles ou l'inclusion de champs transitoires.

Conclusion

La sérialisation d'objets est un outil puissant en Java qui permet la persistance des objets, la communication inter-processus et d'autres fonctionnalités avancées. Cependant, il est nécessaire de l’utiliser avec prudence, compte tenu d’aspects tels que la sécurité et la compatibilité des versions. La maîtrise de la sérialisation et de la désérialisation est essentielle pour les développeurs Java qui travaillent avec des applications nécessitant un échange de données entre différents composants.ou des systèmes.

Répondez maintenant à l’exercice sur le contenu :

Parmi les affirmations suivantes concernant la sérialisation d'objets en Java, laquelle est vraie ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Expressions Lambda en Java

Page suivante de lebook gratuit :

115Expressions Lambda en Java

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte