Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Sérialisation d'objets Java : Persistance et restauration d'objets

Java fournit la sérialisation d'objets : représentation d'un objet comme séquence d'octets incluant ses données, son type et les types de données stockés.

Un objet sérialisé écrit dans un fichier peut être lu et désérialisé : les informations de type et octets recréent l'objet en mémoire.

Le processus est indépendant de la JVM : un objet peut être sérialisé sur une plateforme et désérialisé sur une autre.

Classes clés : ObjectInputStream et ObjectOutputStream (flux de haut niveau).

Méthodes principales

Conditions de sérialisation

  1. La classe doit implémenter java.io.Serializable (interface marqueur, sans méthodes)
  2. Tous les champs doivent être sérialisables. Sinon : marquer transient

Vérification : si la classe implémente Serializable → sérialisable.

Exemple : classe Employee sérialisable


public class Employee implements java.io.Serializable {
    public String name;
    public String address;
    public transient int SSN;  // non sérialisé
    public int number;
    
    public void mailCheck() {
        System.out.println("Envoi chèque à " + name + " " + address);
    }
}

Sérialisation d'un objet

Classe ObjectOutputStream. Convention : extension .ser pour les fichiers sérialisés.

Exemple : SerializeDemo


import java.io.*;

public class SerializeDemo {
    public static void main(String[] args) {
        Employee e = new Employee();
        e.name = "Reyan Ali";
        e.address = "Phokka Kuan, Ambehta Peer";
        e.SSN = 11122333;
        e.number = 101;
        
        try {
            FileOutputStream fileOut = new FileOutputStream("/tmp/employee.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(e);
            out.close();
            fileOut.close();
            System.out.println("Données sérialisées sauvées dans /tmp/employee.ser");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

Désérialisation d'un objet

Classe ObjectInputStream.

Exemple : DeserializeDemo


import java.io.*;

public class DeserializeDemo {
    public static void main(String[] args) {
        Employee e = null;
        try {
            FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            e = (Employee) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException i) {
            i.printStackTrace();
            return;
        } catch (ClassNotFoundException c) {
            System.out.println("Classe Employee introuvable");
            c.printStackTrace();
            return;
        }
        
        System.out.println("Employé désérialisé...");
        System.out.println("Nom : " + e.name);
        System.out.println("Adresse : " + e.address);
        System.out.println("SSN : " + e.SSN);
        System.out.println("Numéro : " + e.number);
    }
}

Résultat :


Employé désérialisé...
Nom : Reyan Ali
Adresse : Phokka Kuan, Ambehta Peer
SSN : 0
Numéro : 101

Points importants

Bonnes pratiques

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression