Sérialisation : méthode load à l'intérieur d'une classe

Résolu
Fatango Messages postés 2 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 10 mars 2007 - 10 mars 2007 à 12:45
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 10 mars 2007 à 14:24
Voila le problème :
J'ai une classe Mission dans laquelle je veux créer une méthode save(String PathFile) et load(String PathFile). Pour Save pas de problème mais pour load ...

Voici un exemple de code :

class Mission implements Serializable, Cloneable {
   ...
   public void Load(String PathFile)
   {
      try {
            FileInputStream InFile = new FileInputStream(File);
            ObjectInputStream ois = new ObjectInputStream(InFile);
             this = (Mission) ois.readObject();
      }
      ...
   }
}

Le problème c'est que this = (Mission) ois.readObject(); ne fonctionne pas !
Comment je peux charger un objet dans this
Merci pour vos réponses !

La vie est un tango

3 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
10 mars 2007 à 14:24
le mieu je trouve c'est de faire une methode load statique et tu ferais :
Mission mi = Mission.load("unfichier");
et dans load :

class Mission implements Serializable, Cloneable {
   ...
   public static void Load(String PathFile)
   {
      try {
            FileInputStream InFile = new FileInputStream(File);
            ObjectInputStream ois = new ObjectInputStream(InFile);
          return (Mission) ois.readObject();
      }
      ...
   }
}

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
10 mars 2007 à 13:19
Salut:

Tu dois implémenter l'interface Cloneable dans ta classe pour définir la manière avec laquelle tu fais le clonage des instances de ta classe Mission.



En fait, this = (Mission)ois.readObject () est un clonage de l'objet de l'objet retourné par readObject () avec l'objet courant this.



class Mission implements Serializable, Cloneable {
 
   public Object clone () {


       }
}



__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certaines personnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
0
Fatango Messages postés 2 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 10 mars 2007
10 mars 2007 à 14:18
Merci de ta réponse,

Mais j'ai déjà implémenté clone( ).
 
Le problème est que pour Java "this" n'est pas une variable, c'est une référence et il ne veut pas modifier sa référence "this" sur l'objet renvoyé par readObject().

Peut être qu'il y a une méthode plus propre que de faire "this = ..." ?

La vie est un tango
0
Rejoignez-nous