serialisieren

feiste

Grünschnabel
Hallo,

versuche schon seit 2 Tagen eine statische Variable (double punkte) der Klasse "Spiel"
zu serialisieren ( wenn gameover == true )
und sie wenn das Programm wieder neustartet wieder zu deserialisieren um die Punkte als Highscore anzuzeigen. Die deserialisierte Variable sollte dann nicht mehr "double punkte" sein
sondern "double highscore".

könnte mir jmd bitte die Klassen zum serialisieren/deserialiseren dieser variable schreiben
und dann erklären welchen Befehl ich eingeben muss damit das serialisieren bzw. deserialisieren durchgeführt wird.
Habs selbst schon sehr lange versucht bin aber ein absoluter Anfänger :/

danke für eure Hilfe!
 
Howdie.

Serialisierung bedeutet eigentlich, den momentanen Zustand eines Objekts (sprich die Werte seiner Member-Variablen) festzuhalten, um es beispielsweise zu speichern oder zu übertragen. Statische Variablen gehören aber zur Klasse, nicht zum Objekt. Du könntest einen Umweg über die Methoden writeObject(...) und readObject(...) gehen und den Wert manuell in den Stream schreiben bzw. aus dem Stream lesen. Eine Variable umzubennen ist IMHO dabei auch nicht möglich...

An deiner Stelle würde ich (wenn du Serialisierung benutzen willst) eine Member-Variable anstatt einer statischen Variable benutzen.
Und ich würde dir auch empfehlen, erstmal ein Tutorial dazu durchzuarbeiten - siehe Link von genodeftest.

Gruß
miffi
 
Ergänzend zum Vorposter Miffi ist der Sinn und Zweck der Serialisierung tatsächlich, einen Objektzustand einzufrieren und beim Laden wieder "aufzutauen". Anders gesagt, Du müßtest ja eigentlich nur die Doubles serialisieren, oder? Dazu würde ich zwei Methoden schreiben:

Code:
public double[] load10Best(File file) throws Exception {
   double[] d = new double[10];
   DataInputStream in = new DataInputStream(new FileInputStream(file));
   for (int i = 0; i < d.length; i++) {
      d[i] = in.readDouble();
   }
   in.close();
   Arrays.sort(d);
  return d;
}

Die schreibende Methode weißt Du bestimmt selbst.
 
Zurück