Bonjour,
est-ce que quelqu'un pourrait m'indiquer comment on fait pour sérialiser ou désérialiser une List<String>
Merci
Bonjour,
est-ce que quelqu'un pourrait m'indiquer comment on fait pour sérialiser ou désérialiser une List<String>
Merci
Tu utilises la classe ObjectOutputStream et ObjectInputStream
Tu le fait de la meme facon que pour n'importequel autre objet...
une list est un objet...
Ecriture d'un objet :
extrait de ma librairie
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 public static boolean WriteObject(String adresse, Object O){ try{ FileOutputStream fileOut = new FileOutputStream(adresse); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(O); out.close(); fileOut.close(); return (true); } catch(Exception e){ e.printStackTrace(); return (false);} }
Lecture d'un objet :
extrait de ma librairie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public static Object ReadObjet(String adresse){ try{ FileInputStream fileIn = new FileInputStream(adresse); ObjectInputStream in = new ObjectInputStream(fileIn); Object o = (Object)in.readObject(); return o; } catch (Exception e){ e.printStackTrace(); return null; } }
Je te mache le boulot la![]()
L'objet que tu sérialise DefaultTableModel ou un objet auquel il fait référence, n'implémente pas l'interface serializable.NotSerializableException
Tu mets quoi dans
TableColumn ?
TableColumn est sérializable:
Donc ce n'est pas la classe en elle même qui pose souci, mais les valeurs qu'elle peut contenir
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class TableColumn extends Object implements Serializable {![]()
Bonjour,
Je ne sais pas si tu as tenté cette solution mais je te conseillerai de rajouter implements Serializable à ta classe Editeur.
Pourquoi sérialiser le model et pas uniquement les données ?
Sérialisation :
Désérialisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Vector data = ((DefaultTableModel) table.getModel()).getDataVector(); try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("sauve.tmp")); try { oos.writeObject(data); } finally { oos.close(); } } catch (IOException ioe) { ioe.printStackTrace(); }
PS : N'oubliez pas de bien fermer vos flux dans des bloc finally.
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 try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("sauve.tmp")); try { Vector data = (Vector) ois.readObject(); Vector columnIdentifiers = new Vector(); columnIdentifiers.add("Lundi"); columnIdentifiers.add("Mardi"); columnIdentifiers.add("Mercredi"); columnIdentifiers.add("Jeudi"); columnIdentifiers.add("Vendredi"); columnIdentifiers.add("Samedi"); columnIdentifiers.add("Dimanche"); ((DefaultTableModel) table.getModel()).setDataVector(data, columnIdentifiers); } finally { ois.close(); } } catch(IOException ioe) { ioe.printStackTrace(); }
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
Tu n'as pas initialisé la table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part table = new JTable();
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
Pour le warningTa classe ClasseTest doit définir l'attribut serialVersionUID.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ClasseTest.java:10: warning: [serial] serializable class ClasseTest has no definition of serialVersionUID public class ClasseTest extends JFrame implements Serializable ^
Pour le warning
cela vient du fait que tu cast vers un type utilisant les génériques (Vector<String>).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ClasseTest.java:28: warning: [unchecked] unchecked cast found : java.lang.Object required: java.util.Vector<java.lang.String> Vector<String> data = (Vector<String>) ois.readObject(); ^
Solution dans ce sujet[generics] unchecked après un casting.
Pour le warning
cela vient du fait que tu assignes un Vector qui n'utilise pas les génériques (celui renvoyé par la méthode getDataVector()) à un Vector qui lui les utilise (le Vector<String> data).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ClasseTest.java:117: warning: [unchecked] unchecked conversion found : java.util.Vector required: java.util.Vector<java.lang.String> Vector<String> data = ((DefaultTableModel) table.getModel()).getDataVector(); ^
Solutionla même que précédement
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