La sérialisation est un processus de conversion des informations d'état d'un objet en une forme qui peut être stockée ou transmise. Généralement, un objet est stocké dans un support de stockage, comme les archives ou les tampons de citation. Pendant la transmission du réseau, il peut être dans des formats tels que les octets ou XML. Les formats de codage d'octets ou de XML peuvent restaurer des objets complètement égaux. Ce processus opposé est également appelé désérialisation .
Sérialisation et désérialisation des objets Java <Br /> En Java, nous pouvons créer des objets de plusieurs manières, et nous pouvons réutiliser l'objet tant que l'objet n'est pas recyclé. Cependant, les objets Java que nous créons existent tous dans la mémoire du tas de JVM. Ces objets ne peuvent exister que lorsque le JVM est en cours d'exécution. Une fois que le JVM cesse de fonctionner, l'état de ces objets est perdu.
Cependant, dans les scénarios d'application réels, nous devons persister ces objets et pouvoir relire les objets en cas de besoin. La sérialisation des objets Java peut nous aider à implémenter cette fonction.
Le mécanisme de sérialisation des objets est une méthode de persistance d'objets intégrée en langue java. Grâce à la sérialisation de l'objet, l'état de l'objet peut être enregistré sous forme de tableau d'octets, et ce tableau d'octets peut être converti en objet par désérialisation si nécessaire. La sérialisation des objets peut être facilement convertie entre les objets actifs et les tableaux d'octets (flux) dans le JVM.
Dans Java, la sérialisation et la désérialisation des objets sont largement utilisées dans RMI (appels de méthode distante) et la transmission du réseau.
Les interfaces connexes et les classes Java fournissent une API pratique pour la prendre en charge afin de faciliter les développeurs pour sérialiser et désérialiser les objets Java. Cela comprend les interfaces et classes suivantes:
La classe permet sa fonctionnalité de sérialisation en implémentant l'interface java.io.Serializable. Les classes qui n'implémentent pas cette interface ne pourront sérialiser ou désérialiser aucun de leurs États. Tous les sous-types d'une classe sérialisable sont eux-mêmes sérialisables. L'interface de sérialisation n'a pas de méthodes ou de champs et n'est utilisé que pour identifier la sémantique sérialisable. (Cette interface n'a pas de méthodes et de champs, alors pourquoi seuls les objets de la classe qui implémentent l'interface peuvent être sérialisés?)
Lorsque vous essayez de sérialiser un objet, si un objet est rencontré, cela ne prend pas en charge l'interface sérialisable. Dans ce cas, une exception NotSerializable est lancée.
Si la classe à sérialiser a une classe parent, et si vous souhaitez persister les variables définies dans la classe parent en même temps, la classe parent doit également intégrer l'interface java.io.serializable.
Voici une classe qui implémente l'interface java.io.serialisable
Package com.hollischaung.serialization.serializablemos; Importer java.io.serializable; / *** créé par Hollis le 16/2/17. * Implémentation de l'interface sérialisable * / classe publique User1 implémente la sérialisable {Private String Name Int Age; String Nom) {this.Name = Retour Name;} public Void Setname (String Name) {this. Nom;} public int getage () {return Age;} public void Setage (int Age) {this.age = age;} @ overRidepublic String toString () {return "user {" + "name = '" + name +' / '+ ", Âge =" + Age +'} ';}} Sérialisation et désérialisation à travers le code suivant
package com.hollischaung.serialization.serializablemos; import org.apache.commons.io.fileutils; import org.apache.commons.io.ioutils; import java.io. *; / *** créé par hollis sur 16/2 / 17. * Serialisemo1 a combiné avec SerialiseabledELO Il veut être sérialisé * / classe publique SerializabledEMO1 {public static void main (String [] args) {// initialise the ObjectionUser user = new User1 (); user.setName ("hollis"); user.setage (23); system.out.println (user); // write obj to FileObjectUtputStream oos oos = null; tessly {oos = FileOutputStream ("tempfile")); oos.writeObject (utilisateur);} catch (ioException e) {e.printStackTrace ();} enfin {ioutils.closequietly (oos);} // lire obj à partir de fichier file = new Fichier ("tempfile"); objetStream Ois = null; Try {ois = New Objective (New Objective (new FileInputStream (fichier)); user1 newUser = (user1) ois.readObject (); System.out.println (newUser);} catch (ioException e) {e.printStackTrace ();} catch (classNotfoundException e) {e.printStStackTrace ();} enfin {iouts.closel GensCe qui précède concerne cet article. J'espère qu'il sera utile pour tout le monde d'apprendre la sérialisation des objets et la désérialisation en Java.