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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
public void serializer(Object o){
Prenons deux classes. Avion et Bateau.

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();
        }
    }
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();
        }
    }
Si j'avais 36 classes, je serais obligé de décrire 36 méthodes... pour rien >.<

Comment pourrais-je rendre cette sérialisation générique ?

Merci à vous