Bonjour,
Suite à ce cour sur la sérialisation, j'ai souhaité le mettre en application et je me posais une question.
Est-il possible de faire une fonction qui permettrait de sérialiser n'importe quel objet qui implémenterai le serializable ?
quelque chose du genre :
Prenons deux classes. Avion et Bateau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void serializer(Object o){
Actuellement, j'utiliserai ceci pour faire la sérialisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public void serializerAvion(Avion a){ try { // ouverture d'un flux de sortie vers le fichier "avion.serial" FileOutputStream fos = new FileOutputStream("avion.serial"); // création d'un "flux objet" avec le flux fichier ObjectOutputStream oos= new ObjectOutputStream(fos); try { // sérialisation : écriture de l'objet dans le flux de sortie oos.writeObject(a); // on vide le tampon oos.flush(); System.out.println(a + " a ete serialise"); } finally { //fermeture des flux try { oos.close(); } finally { fos.close(); } } } catch(IOException ioe) { ioe.printStackTrace(); } }Si j'avais 36 classes, je serais obligé de décrire 36 méthodes... pour rien >.<
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public void serializerBateau(Bateau b){ try { // ouverture d'un flux de sortie vers le fichier "bateau.serial" FileOutputStream fos = new FileOutputStream("bateau.serial"); // création d'un "flux objet" avec le flux fichier ObjectOutputStream oos= new ObjectOutputStream(fos); try { // sérialisation : écriture de l'objet dans le flux de sortie oos.writeObject(b); // on vide le tampon oos.flush(); System.out.println(b + " a ete serialise"); } finally { //fermeture des flux try { oos.close(); } finally { fos.close(); } } } catch(IOException ioe) { ioe.printStackTrace(); } }
Comment pourrais-je rendre cette sérialisation générique ?
Merci à vous![]()
Partager