Serialisation

Retour  |  Home  |  Contact

Serialization.

Besoin

Enregistrer l'état d'un objet Java pour :

Analyse

La sérialisation consiste à enregistrer tout ce qui constitue l'état d'un objet dans un flux quelconque (fichier, socket, etc.). Cela peut inclure l'ensemble de ses attributs ou une sélection de ceux-ci. Ces attributs peuvent être aussi bien des types simples que d'autres objets complexes, incluant eux-même des attributs complexes, etc.

Conception

Un objet Java peut être sérialisé :

Implémentation

java.io.Serializable + constructeur public par défaut

Limitations

Exemples

Un exemple d'objet sérialisable est :

class MonObject extends MonAncetre implements java.io.Serializable {
  protected int            id;          // Sera sérialisé
  private   String         nom;         // Sera sérialisé
  private   OtherObject    objet;       // Sera sérialisé
  private transient Thread traitement;  // Ne sera pas sérialisé

  /**
   * Constructeur par défaut.
   * Nécessaire pour la désérialisation.
   */

  public MonObject() {
  }
}

Un exemple de sérialisation personnalisée est :

class MonObject extends MonAncetre implements java.io.Serializable {
  protected int            id;
  private   String         nom;
  private   OtherObject    objet;
  private transient Thread traitement;

  public MonObject() {
  }

  /**
   * Personalisation de la désérialisation
   */

  private void readObject(ObjectInputStream someObjectStream) {
    try {
      someObjectStream.defaultReadObject();  // Exécute la sérialisation par défaut d'abord
      traitement = new Thread (nom);         // Récrée un Thread similaire (qui n'était pas sérialisable)
    } catch (Exception e) {
      throw new RuntimeException("Erreur lors de la désérialisation: " + e);
    }
  }
}

Voir

Retour  |  Home  |  Contact