Maison  >  Article  >  Java  >  Méthodes d'implémentation de sérialisation et de désérialisation en langage Java

Méthodes d'implémentation de sérialisation et de désérialisation en langage Java

WBOY
WBOYoriginal
2023-06-10 21:33:42806parcourir

Le langage Java est un langage de programmation orienté objet présentant les caractéristiques d'indépendance de la plate-forme, facile à apprendre et à utiliser et d'une grande fiabilité. Parmi elles, la sérialisation et la désérialisation d'objets sont une fonction très importante du langage Java, qui permet de transmettre ou de stocker facilement des objets dans différentes JVM. Cet article présentera les méthodes d'implémentation de la sérialisation et de la désérialisation du langage Java.

1. Le concept de sérialisation

La sérialisation fait référence au processus de conversion d'objets en séquences d'octets afin qu'ils puissent être transmis ou stockés sur le réseau. Le processus de sérialisation peut convertir les objets Java dans un format commun, tel que XML, JSON, flux binaire, etc., pour la transmission et le traitement sur différentes plateformes. Dans le langage Java, la sérialisation peut être implémentée à l'aide de l'interface Java.io.Serializing.

2. Interface Java.io.Seriallessly

L'interface Java.io.Seriallessly est une interface de marquage fournie par le langage Java, utilisée pour marquer une classe comme étant sérialisable. Seules les classes qui implémentent cette interface peuvent effectuer des opérations de sérialisation et de désérialisation. Cette interface n'implémente aucune méthode, mais sert de marqueur pour indiquer à la JVM que cette classe est sérialisable.

Une classe qui implémente l'interface Java.io.Seriallessly doit remplir les conditions suivantes :
1 La classe doit être sérialisable, c'est-à-dire que son statut peut être écrit dans le flux d'octets.
2. La classe doit avoir un constructeur sans paramètre.
3. Toutes les variables membres non statiques de cette classe doivent être sérialisables.

Par exemple, voici un exemple de classe qui implémente l'interface Java.io.Serializing :

import java.io.Serializable;

public class Person implements Serializable {
    private String name; // 可序列化的成员变量
    private int age; // 可序列化的成员变量

    public Person(String name, int age) {
        this.name = name;
        this.age = 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; }
}

3. #Java Le langage propose deux méthodes d'implémentation de sérialisation : la classe Java.io.ObjectOutputStream et la classe Java.io.ByteArrayOutputStream.

Classe Java.io.ObjectOutputStream
  1. La classe Java.io.ObjectOutputStream est une classe de sérialisation fournie par le langage Java. Cette classe fournit des méthodes pour sérialiser des objets Java dans un flux d'octets et la possibilité d'écrire ces octets dans un OutputStream. Voici un exemple de méthode qui sérialise un objet Person dans un flux d'octets et l'écrit dans un fichier : 🎜La classe #Java.io.ByteArrayOutputStream est une classe fournie par le langage Java pour la sérialisation. Cette classe fournit des méthodes pour sérialiser des objets Java dans des tableaux d'octets et la possibilité de stocker ces octets dans un ByteArrayOutputStream. Voici un exemple de méthode qui sérialise un objet Person dans un flux d'octets et le stocke dans un tableau d'octets :
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("Tom", 20);

        try {
            FileOutputStream fos = new FileOutputStream("person.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            oos.writeObject(person);

            oos.close();
            fos.close();

            System.out.println("Person对象已经序列化到person.ser中。");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4 Méthode d'implémentation de désérialisation

    Langage Java. Deux méthodes d'implémentation de désérialisation sont fournies : la classe Java.io.ObjectInputStream et la classe Java.io.ByteArrayInputStream.
Classe Java.io.ObjectInputStream

La classe Java.io.ObjectInputStream est une classe de désérialisation fournie par le langage Java. Cette classe fournit des méthodes pour lire les octets d'un InputStream et les désérialiser en objets Java. Voici un exemple de méthode qui lit un flux d'octets à partir d'un fichier et le désérialise en un objet Person :

La classe Java.io.ByteArrayInputStream est une classe fournie par le langage Java pour la désérialisation. Cette classe fournit des méthodes pour lire des octets à partir d'un tableau d'octets et les désérialiser en objets Java. Voici un exemple de méthode pour désérialiser un tableau d'octets en un objet Personne :

import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;

public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("Tom", 20);

        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bos);

            oos.writeObject(person);

            byte[] byteArray = bos.toByteArray();

            oos.close();
            bos.close();

            System.out.println("Person对象已经序列化到字节数组中。");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

En bref, les fonctions de sérialisation et de désérialisation du langage Java sont une fonction très importante, qui permet de convertir facilement des objets Transférez ou stockez dans différentes JVM. La sérialisation et la désérialisation sont réalisées en implémentant l'interface Java.io.Serializing et en utilisant les classes Java.io.ObjectOutputStream et Java.io.ObjectInputStream. Dans le même temps, les classes Java.io.ByteArrayOutputStream et Java.io.ByteArrayInputStream peuvent également implémenter ces opérations.

    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