ObjectOutputStream

laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 - 14 août 2012 à 22:24
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 4 sept. 2012 à 09:04
Bonjour
j'ai un petit soucis je n'arrive pas a enregistrer mes objets ça me met toujours une exception,quelqu’un pourrait il me dire ce qui ne va pas dans mon code svp!
merci beaucoup!


package rec_objet;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.*;

public class Enregistre implements Serializable {

/**
* @param args
*/
public static void main(String[] args) {

ObjectInputStream ois;
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("game.txt"))));
//Nous allons écrire chaque objet Game dans le fichier
oos.writeObject(new Produit("Assassin Creed", "Aventure",45,
45.69));

oos.close();
} catch (java.io.IOException e) {
e.printStackTrace();
} }}

///java.io.NotSerializableException: rec_objet.Produit
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at rec_objet.Enregistre.main(Enregistre.java:24)///

4 réponses

votre class Produit ainsi que ses nested classes doivent implémenter l'interface java.io.Serializable . il n'y a pas de méthode à définir, ajoutez juste:
implements Serializable
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2012 à 08:49
Salut,

Tu n'enregistreras rien de cette manière. Pour enregistrer un objet, il faut que la classe dont il est issu implémenté sérialisable.

Dans ton cas, la classe qui implémente sérialisable ne contient rien (juste une méthode statique qui n'est pas enregistrée puisqu'elle ne dépend pas de la classe)
0
Salut,
Dans ton cas, la classe qui implémente sérialisable ne contient rien (juste une méthode statique qui n'est pas enregistrée puisqu'elle ne dépend pas de la classe)

Dans son cas l'objet à sérialiser est une instance de les classe Produit
oos.writeObject(new Produit("Assassin Creed", "Aventure",45, 45.69));

Donc la classe qui devra implémenter Serializable est "Produit". la première ligne de l'exception le confirme:
java.io.NotSerializableException: rec_objet.Produit

je note qu'on peut sérialiser les instances d'une classe qui ne contient ni méthode ni attribut
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 sept. 2012 à 09:04
@hyomi : quand je disais qu'il n'enregistrait rien, je voulais dire qu'il n'enregistrait pas les données qu'il souhaitait conserver.

Maintenant, je pense que le problème est résolut non ? Un retour laurent2403 ?
0
Rejoignez-nous