Sérialisation : fait référence aux données d'objet Java dans la mémoire tas, qui sont stockées d'une manière ou d'une autre dans un fichier disque, ou transmises à d'autres nœuds du réseau (transmission réseau). Ce processus est appelé sérialisation, qui fait généralement référence au processus de conversion d'une structure de données ou d'un objet en binaire. (Apprentissage recommandé : cours java )
Convertissez l'objet en binaire pour le stockage ou la transmission réseau.
Le rôle de la sérialisation
① Lorsque vous souhaitez enregistrer des objets en mémoire dans un fichier ou une base de données
② Lorsque vous souhaitez utiliser des sockets ; Lors de la transmission d'objets sur le réseau ;
③ Lorsque vous souhaitez transmettre des objets via RMI
Certains scénarios d'application impliquent la conversion d'objets en binaire, et la sérialisation garantit qu'ils peuvent être lus avec succès.
Implémentation de la sérialisation Java
Pour réaliser la sérialisation des objets, l'opération la plus directe consiste à implémenter l'interface Serialisable
Utiliser des objets dans le flux IO Streams peut implémenter des opérations de sérialisation, enregistrer des objets dans des fichiers, puis les lire.
Créez d'abord un objet et implémentez l'interface sérialisable :
import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = 1L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } }
Utilisez le flux d'objets pour écrire une classe d'outils permettant d'enregistrer et de lire des objets :
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeUtil { // 保存对象,序列化 public static void saveObject(Object object) throws Exception { ObjectOutputStream out = null; FileOutputStream fout = null; try { fout = new FileOutputStream("D:/1.txt"); out = new ObjectOutputStream(fout); out.writeObject(object); } finally { fout.close(); out.close(); } } // 读取对象,反序列化 public static Object readObject() throws Exception { ObjectInputStream in = null; FileInputStream fin = null; try { fin = new FileInputStream("D:/1.txt"); in = new ObjectInputStream(fin); Object object = in.readObject(); return object; } finally { fin.close(); in.close(); } } }
Test :
public class Main { public static void main(String[] args) { User user = new User(); user.setName("旭旭宝宝"); user.setAge(33); // 保存 try { SerializeUtil.saveObject(user); } catch (Exception e) { System.out.println("保存时异常:" + e.getMessage()); } // 读取 User userObject; try { userObject = (User) SerializeUtil.readObject(); System.out.println(userObject); } catch (Exception e) { System.out.println("读取时异常:" + e.getMessage()); } } }
Résultat du test :
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!