la sérialisation est un processus de conversion d’un objet en une séquence d’octets qui peut être conservée sur un disque ou une base de données ou peut être envoyée via des flux. Le processus inverse de création d’objet à partir d’une séquence d’octets est appelé désérialisation.

Une classe doit implémenter L’interface sérialisable présente dans le packagejava.io afin de sérialiser son objet avec succès., Serializable est une interface de marqueur qui ajoute un comportement sérialisable à la classe qui l’implémente.

Java fournit Serializable API encapsulé sous java.io le paquet pour la sérialisation et la désérialisation des objets qui comprennent,

  • java.io.serializable
  • java.io.Externalizable
  • ObjectInputStream
  • ObjectOutputStream

Java interface Marqueur

Marqueur de l’Interface est une interface spéciale en Java sans champ et méthode., L’interface Marker est utilisée pour informer le compilateur que la classe qui l’implémente a un comportement ou une signification particulière. Voici un exemple de Marqueur de l’interface,

  • java.io.serializable
  • java.lang.Cloneable
  • java.rmi.Remote
  • java.util.RandomAccess

Toutes ces interfaces n’a pas de méthode et sur le terrain. Ils ajoutent seulement un comportement spécial aux classes qui les implémentent. Cependant, les interfaces de marqueur ont été obsolètes depuis Java 5, elles ont été remplacées par des Annotations., Les Annotations sont utilisées à la place de L’Interface de marqueur qui jouent exactement le même rôle que les interfaces de marqueur ont fait avant.

pour implémenter la sérialisation et la désérialisation, Java fournit deux classes ObjectOutputStream et ObjectInputStream.

la classe ObjectOutputStream

Il est utilisé pour écrire des états d’objet dans le fichier. Un objet qui implémente l’interface java.io.Serializable peut être écrit dans strams. Il fournit diverses méthodes pour effectuer la sérialisation.

ObjectInputStream class

Un ObjectInputStream désérialise les objets et les données primitives écrits à l’aide d’un ObjectOutputStream.,

Writeobject() et Readobject ()

la méthodewriteObject() de la classeObjectOutputStream sérialise un objet et l’envoie au flux de sortie.

public final void writeObject(object x) throws IOException

Le readObject() méthode ObjectInputStream de classe fait référence à l’objet de flux et désérialiser.

public final Object readObject() throws IOException,ClassNotFoundException

lors de la sérialisation si vous ne voulez pas qu’un champ fasse partie de l’état de l’objet, déclarez-le statique ou transitoire en fonction de vos besoins et il ne sera pas inclus pendant le processus de sérialisation java.,

Exemple: la Sérialisation d’un Objet en Java

Dans cet exemple, nous avons une classe qui implémente l’interface Serializable pour faire son objet sérialisé.

L’objet de la classe Studentinfo est sérialisé en utilisant la méthodewriteObject() et écrit dans le fichierstudent.txt.

exemple : désérialisation D’objet en Java

pour désérialiser l’objet, nous utilisons la classe ObjectInputStream qui lira l’objet à partir du fichier spécifié. Voir l’exemple ci-dessous.,

Abhi104null

le champ de Contact est null car,il a été marqué comme statique et comme nous l’avons discuté précédemment, les champs statiques ne sont pas sérialisés.

remarque: les membres statiques ne sont jamais sérialisés car ils sont connectés à la classe et non à l’objet de la classe.

transitoire mot-Clé

lors de la sérialisation d’un objet, si nous ne voulons pas que certaines données membres de l’objet à sérialiser nous pouvons mentionner transitoire. le mot-clé transitoire empêchera ce membre de données d’être sérialisé.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • Faire un membre de données transient empêcher son sérialisation.
  • Dans cet exemple: rid ne peut pas être sérialisé, car il est transitoire, et contact restera aussi délinéarisé parce qu’il est statique.