next up previous contents index
Next: Les flots et l'Internet Up: Flots de données Previous: Flots de données

Persistance et sérialisation

Les classes ObjectOutputStream  et ObjectInputStream  permettent de rendre persistants  les objets de Java en les sauvegardant sur un flot (qui peut être écrit sur un fichier), puis en les relisant. Seuls les objets dont la classe implémente l'interface Serializable  peuvent bénéficier de ce mécanisme, appelé sérialisation . Si un objet comporte des champs qui sont des références à d'autres objets sérialisables, ces objets sont aussi sérialisés ; un objet partagé (par exemple, figure 1.16, p. [*]) ne sera sauvegardé qu'en un seul exemplaire. Ces fonctionnalités sont encore obtenues par décoration d'un flot.

  ObjectOutputStream oos =
    new ObjectOutputStream(new FileOutputStream("toto"));
  oos.writeObject("Aujourd'hui");
  oos.writeObject(new java.util.Date());

La lecture de ces objets, qui se fait dans le même ordre que leur écriture, doit opérer un transtypage d'Object vers la classe que l'on veut restituer :

  ObjectInputStream ois = 
    new ObjectInputStream(new FileInputStream("toto"));
  String chaîne = (String) ois.readObject();
  java.util.Date date = (java.util.Date) ois.readObject();

Pour faire bénéficier une classe de ce mécanisme, il suffit de déclarer que la classe implémente Serializable, interface qui ne déclare aucune méthode.



R. Lalement
2000-10-23