Maison  >  Article  >  Java  >  Qu'est-ce que la sérialisation en Java

Qu'est-ce que la sérialisation en Java

(*-*)浩
(*-*)浩original
2019-11-13 13:36:413285parcourir

Qu'est-ce que la sérialisation en Java

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 :

Quest-ce que la sérialisation en Java

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn