Bonjour à tous,
Je voudrais savoir si il est possible de sérialiser un tableau à 2 dimensions contenant des objets de type autres que ceux de Java (String, Integer, ...) car j'ai essayer mais ça ne marche pas.
Merci
Bonjour à tous,
Je voudrais savoir si il est possible de sérialiser un tableau à 2 dimensions contenant des objets de type autres que ceux de Java (String, Integer, ...) car j'ai essayer mais ça ne marche pas.
Merci
Bonjour à tous,
Je voudrais savoir si il est possible de sérialiser un tableau à 2 dimensions contenant des objets de type autres que ceux de Java (String, Integer, ...) car j'ai essayer mais ça ne marche pas.
Pour la sérialisation du tableau dans un fichier je ne rencontre aucune erreur mais lors de la désérialisation j'ai une erreur ArrayIndexOutOfBoundsException car en fait le tableau n'a pas été sérialisé finalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import java.io.Serializable; public class Personne implements Serializable { ... }Merci
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Serial { static Personne[][] tableau; Serial(){ ... } /** * Sauvegarde le tableau sous forme sérialisée dans le fichier serial. */ static void serialiser(){ try { FileOutputStream fichier = new FileOutputStream("serial"); try { ObjectOutputStream oos = new ObjectOutputStream(fichier); try { oos.writeObject(tableau); oos.flush(); } finally { oos.close(); } } finally { fichier.close(); } } catch (IOException e){ e.printStackTrace(); } } /** * Désérialise le tableau sérialisé dans le fichier serial. */ void deserialiser(){ try { FileInputStream fichier = new FileInputStream("serial"); try { ObjectInputStream ois = new ObjectInputStream(fichier); try { tableau = (Personne[][])ois.readObject(); } finally { ois.close(); } } finally { fichier.close(); } } catch (IOException ioe){ ioe.printStackTrace(); } catch (ClassNotFoundException cnfe){ cnfe.printStackTrace(); } } }
Bonjour,
J'ai fait un test simple, ton code à l'air de marcher. Est ce normal que la méthode deserialiser ne soit pas static ? Peux tu nous monter le code qui utilise les méthodes serialiser et deserialiser.
A+
Hydraland
Merci de vos réponses gifffftane et hydraland.
Oui c'est normal que la méthode deserialiser ne soit pas static.
Effectivement je viens de faire un test rapide et mon code marche.
J'ai une erreur lors de la contruction de mon tableau.
Merci encore
J'avais oublié de dire que j'avais quand même une erreur pour la désérialisation qui venait du fait que je n'avais pas mis une serialVersionUID ( ex: static private final long serialVersionUID = 6L) dans la classe Personne qui n'est normalement pas obligatoire parce que le mécanisme de sérialisation Java en calcule un par défaut.
Voilà
Pour infovoilà un petit lien vers la FAQ qui explique le problème au cas où d'autres personnes se posent des questions sur le serialVersionUID.
serialVersionUID
Un tableau est en lui même sérializable, quelle que soit sa dimension.
Mais, comme pour tout objet sérializable, il faut que ses composantes le soient aussi ; il faut donc que tous les éléments du tableau soient aussi sérialisables.
Partager