Maison Java javaDidacticiel Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ?

Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ?

Aug 02, 2023 pm 02:37 PM
- java - 序列化 - 反序列化

Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ?

Introduction : 
Dans le développement Java, la persistance des objets est un moyen important de parvenir à un stockage à long terme des données. La sérialisation et la désérialisation sont l'un des moyens couramment utilisés pour assurer la persistance des objets en Java. Cet article présentera les concepts de sérialisation et de désérialisation et comment utiliser la sérialisation et la désérialisation en Java pour obtenir la persistance des objets.

1. Que sont la sérialisation et la désérialisation ?
La sérialisation est le processus de conversion d'un objet en flux d'octets afin que l'objet puisse être copié et transmis lors d'opérations telles que la transmission réseau ou l'enregistrement sur disque. La désérialisation est le processus de reconversion d'un flux d'octets en objet et de restauration de l'état et des données de l'objet. En Java, la sérialisation et la désérialisation des objets sont réalisées en implémentant l'interface Serialisable.

2. Comment implémenter la sérialisation
Java propose deux méthodes de sérialisation principales, à savoir la sérialisation basée sur le flux d'octets et la sérialisation basée sur le flux de caractères.

1. Sérialisation basée sur un flux d'octets
La sérialisation basée sur un flux d'octets peut être implémentée via les classes ObjectOutputStream et ObjectInputStream. Voici un exemple de code qui montre comment sérialiser et désérialiser des objets à l'aide d'une approche basée sur le flux d'octets.

import java.io.*;

public class ByteStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字节流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个输出流
            FileOutputStream fileOutputStream = new FileOutputStream("person.obj");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            
            // 将对象写入输出流
            objectOutputStream.writeObject(person);
            
            // 关闭输出流
            objectOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字节流反序列化为对象
        try {
            // 创建一个输入流
            FileInputStream fileInputStream = new FileInputStream("person.obj");
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            
            // 读取对象数据
            Person person = (Person) objectInputStream.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭输入流
            objectInputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
Copier après la connexion

Dans le code ci-dessus, nous créons d'abord un objet Person à sérialiser, puis sérialisons l'objet dans un flux d'octets via les classes FileOutputStream et ObjectOutputStream et l'écrivons dans le fichier. Ensuite, nous désérialisons le flux d'octets du fichier en un objet via les classes FileInputStream et ObjectInputStream, et enfin imprimons les valeurs d'attribut de l'objet.

2. Sérialisation basée sur un flux de caractères
La sérialisation basée sur un flux de caractères peut être implémentée via les classes ObjectWriter et ObjectReader.

import java.io.*;

public class CharacterStreamSerializationDemo {
    public static void main(String[] args) {
        // 将对象序列化为字符流
        try {
            // 创建一个待序列化的对象
            Person person = new Person("Tom", 30);
            
            // 创建一个Writer
            FileWriter fileWriter = new FileWriter("person.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            ObjectWriter objectWriter = new ObjectWriter(bufferedWriter);
            
            // 将对象写入字符流
            objectWriter.writeObject(person);
            
            // 关闭字符流
            objectWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将字符流反序列化为对象
        try {
            // 创建一个Reader
            FileReader fileReader = new FileReader("person.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            ObjectReader objectReader = new ObjectReader(bufferedReader);
            
            // 读取对象数据
            Person person = (Person) objectReader.readObject();
            
            // 打印对象数据
            System.out.println(person.getName());   // 输出:Tom
            System.out.println(person.getAge());    // 输出:30
            
            // 关闭字符流
            objectReader.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private String name;
    private int age;
    
    // 构造方法、getter和setter省略
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
Copier après la connexion

Dans le code ci-dessus, nous sérialisons l'objet dans un flux de caractères via les classes FileWriter, BufferedWriter et ObjectWriter et l'écrivons dans le fichier. Ensuite, le flux de caractères dans le fichier est désérialisé en un objet via les classes FileReader, BufferedReader et ObjectReader, et enfin les valeurs d'attribut de l'objet peuvent être imprimées.

3. Remarques
Lorsque vous utilisez la sérialisation et la désérialisation en Java pour obtenir la persistance d'un objet, vous devez faire attention aux points suivants :

1. La classe de l'objet doit implémenter l'interface Serialisable, sinon la sérialisation et la désérialisation ne peuvent pas être effectuées. . sérialisation.
2. Tous les objets référencés dans la classe sérialisée doivent également être sérialisables.
3. Les champs des classes sérialisées et désérialisées peuvent être de n'importe quel type, y compris des classes personnalisées, des types de données de base, des types de collection, etc.
4. Les champs des classes sérialisées et désérialisées peuvent être modifiés de manière transitoire et ils ne seront pas conservés.

Conclusion : 
Grâce à l'introduction de cet article, nous avons appris ce que sont la sérialisation et la désérialisation et démontré, à travers des exemples de code, comment utiliser la sérialisation et la désérialisation en Java pour obtenir la persistance des objets. Dans le développement réel, le stockage et la transmission à long terme des objets peuvent être obtenus en sélectionnant une méthode de sérialisation appropriée en fonction des besoins et en suivant les spécifications et précautions de sérialisation.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment développer une application de données de géolocalisation basée sur Cassandra à l'aide de Java Comment développer une application de données de géolocalisation basée sur Cassandra à l'aide de Java Sep 20, 2023 pm 06:19 PM

Comment utiliser Java pour développer une application de données de localisation géographique basée sur Cassandra. Les applications de données de géolocalisation sont largement utilisées dans la société moderne, telles que la navigation cartographique, le partage de localisation, les recommandations de localisation, etc. Cassandra est une base de données NoSQL distribuée et hautement évolutive, capable de gérer d'énormes quantités de données et particulièrement adaptée au stockage et à l'interrogation de données de localisation géographique. Cet article explique comment utiliser Java pour développer une application de données de localisation géographique basée sur Cassandra et fournit des exemples de code spécifiques. 1. Environnement

Comment utiliser la méthode LinkedList.removeFirst() pour supprimer des éléments de la tête de liste chaînée en Java ? Comment utiliser la méthode LinkedList.removeFirst() pour supprimer des éléments de la tête de liste chaînée en Java ? Nov 18, 2023 am 11:10 AM

La classe LinkedList en Java est une classe qui implémente une structure de données de liste chaînée. Elle fournit de nombreuses méthodes utiles pour gérer les listes chaînées. Parmi eux, la méthode removeFirst() peut être utilisée pour supprimer des éléments de l'en-tête de la liste chaînée. Ce qui suit explique comment utiliser la méthode LinkedList.removeFirst() et donne des exemples de code spécifiques. Avant d'utiliser la méthode LinkedList.removeFirst(), nous devons d'abord créer une LinkedList

Installez rapidement et démarrez avec Kafka sous Linux : un guide étape par étape Installez rapidement et démarrez avec Kafka sous Linux : un guide étape par étape Jan 31, 2024 pm 09:26 PM

Étapes détaillées pour installer Kafka dans un environnement Linux 1. Prérequis Système d'exploitation : Linux (Ubuntu ou CentOS recommandé) Java : JDK8 ou supérieur ZooKeeper : version 3.4 ou supérieure Kafka : la dernière version stable 2. Installez Javasudoapt-getupdatesudoapt-getinstalldefault-jdk3. Installer ZooKeeperwg

Implémentation de compteurs distribués à l'aide de Redis et Java : comment obtenir une concurrence élevée Implémentation de compteurs distribués à l'aide de Redis et Java : comment obtenir une concurrence élevée Jul 29, 2023 am 08:21 AM

Implémentation de compteurs distribués à l'aide de Redis et Java : Comment obtenir une concurrence élevée Introduction : Dans le développement d'applications Internet modernes, la concurrence élevée est un défi courant. Lorsque plusieurs utilisateurs accèdent à une application en même temps, celle-ci doit être capable de traiter et de suivre correctement la demande de chaque utilisateur afin d'éviter toute perte de données ou toute confusion. Dans cet article, nous verrons comment implémenter un compteur distribué à l'aide de Redis et Java pour obtenir un suivi et une gestion des données à haute concurrence. 1. Introduction à Redis Redis est une base open source

Comment utiliser les opérations de script Linux pour implémenter la connexion à distance en Java Comment utiliser les opérations de script Linux pour implémenter la connexion à distance en Java Oct 05, 2023 am 08:42 AM

Présentation de l'utilisation des opérations de script Linux pour implémenter la connexion à distance en Java : La connexion à distance est un moyen d'utiliser un ordinateur pour se connecter à d'autres ordinateurs dans un environnement réseau afin d'effectuer des opérations. Dans les systèmes Linux, nous utilisons généralement le protocole SSH pour la connexion à distance. Cet article explique comment implémenter des opérations de connexion à distance en appelant des scripts Linux en Java et donne des exemples de code spécifiques. Étape 1 : Écrire le code du script Linux Tout d'abord, nous devons écrire un script Linux pour passer

Utiliser Dropbox pour la gestion du stockage dans le développement d'API Java Utiliser Dropbox pour la gestion du stockage dans le développement d'API Java Jun 18, 2023 pm 01:21 PM

Utilisation de Dropbox pour la gestion du stockage dans le développement d'API Java Avec l'application généralisée du cloud computing, de plus en plus d'applications doivent stocker des données dans le cloud et pouvoir facilement lire, écrire et gérer ces données. En tant que l'un des services de stockage cloud les plus populaires, Dropbox fournit l'API la plus riche et la plus flexible, permettant aux développeurs d'intégrer facilement les fonctions de gestion du stockage de Dropbox dans leurs applications. Cet article explique comment utiliser Dr dans le développement JavaAPI.

Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ? Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ? Aug 02, 2023 pm 02:37 PM

Comment obtenir la persistance des objets en utilisant la sérialisation et la désérialisation en Java ? Introduction : Dans le développement Java, la persistance des objets est un moyen important de parvenir à un stockage à long terme des données. La sérialisation et la désérialisation sont l'un des moyens couramment utilisés pour assurer la persistance des objets en Java. Cet article présentera les concepts de sérialisation et de désérialisation et comment utiliser la sérialisation et la désérialisation en Java pour obtenir la persistance des objets. 1. Que sont la sérialisation et la désérialisation ? La sérialisation est le processus de conversion d'un objet en flux d'octets afin que l'objet puisse être transmis ou enregistré sur le réseau.

Erreur de format de données en Java - java.text.ParseException Erreur de format de données en Java - java.text.ParseException Jun 25, 2023 pm 03:07 PM

En tant que langage de programmation de haut niveau, Java est largement utilisé dans le développement au niveau de l'entreprise et dans le développement d'applications mobiles. En JAVA, le traitement des données est une tâche très importante. Dans de nombreux cas, les données doivent être formatées pour garantir l'exactitude et l'efficacité du programme. Cependant, au cours de ce processus, vous pouvez rencontrer des erreurs de format de données, et ces erreurs peuvent empêcher le programme de fonctionner correctement. En JAVA, java.text.ParseException est une erreur de formatage courante et un

See all articles