2017-08-11 1 views
0

Ich möchte ein Objekt konstruieren, die das folgende Verhalten hat:Wie speichere ich ein Objekt in Java? Deserialisierung in Konstruktor

Wenn die Datei ‚save_object‘ leer ist oder nicht existiert das Objekt Standard erstellen sonst das Objekt zurück, das in der ist Datei

Ich weiß, ich werde die Serialisierung verwenden How to write and read java serialized objects into a file Aber ich möchte es in der Klasse tun, und ich weiß nicht, wie es geht.

ich mit diesem Code versucht (Leider habe ich nur einen Teil, wenn es needeed ist, ich so schnell den Rest werde wie ich kann)

public class Garage implements Serializable 
{ 
    private List<String> cars; 

    public Garage() 
    { 
     File garageFile = new File("garage.txt"); 
     if(!garageFile.exists() || garageFile.length()==0) 
     { 
      cars = new List<String>; 
      System.out.println("Aucune voiture sauvegardée"); 
     } 
     else 
     { 
      ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(garageFile))); 
      this = (Garage)ois.readObject(); 
     } 
    } 
} 

ich ein Problem mit this = (Garage)ois.readObject(); haben und ich nicht wissen, wie man es schafft. Ich habe einige Ideen, aber alle von ihnen sind über ein attribut durch eins, und wenn es möglich ist, ich bevorzuge zu vermeiden, dass

+0

2 Dinge, die wir brauchen : –

+0

1: PLZ, die kompiliert, so können wir hier Dinge überprüfen/reproduzieren ... –

+0

2: *** Ich habe ein Problem mit diesem = (Garage) ois.readObject(); *** ist sehr breit ... Fehlermeldungen müssen auch hier platziert werden –

Antwort

1

Ihre Klasse wird kompliziert und falsch entwickelt, weil Sie nicht die Verantwortlichkeiten jedes Moduls in teilen die App, was Sie versuchen zu tun, muss die Arbeit von einigen GarageManager Klasse sein, diese Klasse ist verantwortlich für die Überprüfung, ob die Datei existiert oder nicht und Ihnen ein Garage-Objekt (entweder neu erstellt oder von Festplatte/deserialized)

und Beispiel dafür, wie die Manager wie ist aussehen:

class GarageManager { 

    public static Garage GetGarage(String garagePath) 
      throws FileNotFoundException, IOException, ClassNotFoundException { 
     Garage x = null; 
     File garageFile = new File(garagePath); 
     if (!garageFile.exists() || garageFile.length() == 0) { 
      ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(garageFile))); 
      x = (Garage) ois.readObject(); 
      ois.close(); 
     } else { 
      x = new Garage(); 
     } 
     return x; 
    } 
} 
+1

Ok in der allgemeinen App. Hier ist es eine Übung (Entschuldigung auf Französisch http://exercices.openclassrooms.com/assessment/63?login=291463&tk=bb5924474ed7ca20fd3bb5d200e1431a&sbd=2016-02-01&sbdtk=fa78d6dd3126b956265a25af9b322d55) Und es gibt keinen GarageManager – Ccile

Verwandte Themen