Bonjour,
Si je crée un Vector<Point>, est-il possible de le dé/sérialiser en une fois ou bien faut-il dé/sérialiser chacun des objets point qu'il contient un par un ?
merci, je ne sais pas vérifier par moi même.
Bonjour,
Si je crée un Vector<Point>, est-il possible de le dé/sérialiser en une fois ou bien faut-il dé/sérialiser chacun des objets point qu'il contient un par un ?
merci, je ne sais pas vérifier par moi même.
bonjour,
Le meilleur moyen c'est d'essayer, pour comprendre comment ca marche !
Tu sérialises dans un fichier ton vector et tu regardes le résultat.
Mais pour répondre à la question, lorsque tu vas sérialiser ton vector, il va écrire la définition de la classe, celle des valeurs, les variables de vector et les variables de Point dans un seul bloc.
Conclusion lorsque tu va dé-sérialiser ton vector il va tout chargé en une fois.
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran
Mes Articles : Mon premier article est sur le language D
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
La classe Vector est Serializable, donc il doit être possible de la serialiser (et par conséquent son contenu).
A noter que la classe Point doit aussi être Serializable.
Edit : trop tard![]()
Effectivement, le mieux, c'est d'essayer mais je ne sais pas vraiment...commencer, alors je n'ose vous le demander : serait-il possible d'avoir un exemple (très scolaire) de code ?
c'est pas de la lâcheté, j'ai fait des recherches pires que celle-là, mais ici, je plante!!!
Un exemple avec des String à la place des Point (si Point implémente Serializable c'est strictement pareil).
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
28
29
30
31
32
33
34
35 Vector<String> v = new Vector<String>(); v.add("azerty"); v.add("qsdfgh"); v.add("wxcvbn"); // Serialisation try { FileOutputStream fichier = new FileOutputStream("test.ser"); ObjectOutputStream oos = new ObjectOutputStream(fichier); oos.writeObject(v); fichier.close(); oos.close(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } // Deserialisation try { FileInputStream fichierIn = new FileInputStream("test.ser"); ObjectInputStream ois = new ObjectInputStream(fichierIn); Vector<String> vDeser = (Vector<String>) ois.readObject(); fichierIn.close(); ois.close(); System.out.println(vDeser); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); }
merci gailuris pour ton exemple de code , j'ai fait un petit prgramme de test
et à la compilation j'ai :
Note :serie2.java (nom du programme) uses unsafe or unchecked operations
Note : recompile with -Xlint:unchecked for details
(je comprend l'anglais) mais est-ce due à mon implémentation, voici mon programme :
merci pour ta patience
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 import java.io.*; import java.util.*; class Serie2 { public static void main(String argv[]) { Vector<String> v = new Vector<String>(); v.add("azerty"); v.add("qsdfgh"); v.add("wxcvbn"); // Serialisation try { FileOutputStream fichier = new FileOutputStream("test.ser"); ObjectOutputStream oos = new ObjectOutputStream(fichier); oos.writeObject(v); fichier.close(); oos.close(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } // Deserialisation try { FileInputStream fichierIn = new FileInputStream("test.ser"); ObjectInputStream ois = new ObjectInputStream(fichierIn); Vector<String> vDeser = (Vector<String>) ois.readObject(); fichierIn.close(); ois.close(); System.out.println(vDeser); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } } }
C'est la ligne
qui provoque cet avertissement, le compilateur ne peut pas savoir au moment où il compile que readObject renvoi un Vector de String. Lis un peu à propos des Generics si tu veux mieux comprendre ce warning.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Vector<String> vDeser = (Vector<String>) ois.readObject();
Ce n'est donc pas du à ton implémentation (j'ai le même warning).
Pour ne plus avoir ce warnig tu peux ajouter un suppressWarnings juste avant la déclaration de la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @SuppressWarnings("unchecked") public static void main(String argv[]) { ...
merci beaucoup, en fait, je prépare un concours, je suis nouveau en java et c'est le langage que "paradoxalement", j'ai choisi, mais je vais réussir à m'y retrouver.
Pensez à regarder dans les les cours et tutoriels Javavoici un tutoriel sur La sérialisation binaire en Java
Pensez également à toujours fermer vos flux dans des blocs finally.
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Partager