Input/Output Custom Serialization - hilfe bei Realisierung

GenerationLost

Mitglied
Hallo!

Ich möchte Java-Objekte mit Hilfe der Schnittstelle Serializable speichern und laden können. Das Problem ist, dass diese Objekte JavaFX Properties als Attribute besitzen, welche über Serializable eine Exception beim Schreiben werfen.

http://www.oracle.com/technetwork/articles/java/javaserial-1536170.html
Durch diesen Artikel habe ich erfahren, dass man aushebeln kann, indem man seine eigenen Lese- und Schreibemethoden in der zu serialierenden Klasse implementiert:
Java:
private void writeObject(ObjectOutputStream out) throws IOException
    {
        out.defaultWriteObject();
    }
 
    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
    {
        // our "pseudo-constructor"
        in.defaultReadObject();
        // now we are a "live" object again, so let's run rebuild and start
    }

http://stackoverflow.com/questions/7290777/java-custom-serialization
Über diesen Post habe ich so in etwa eine Ahnung bekommen, was in diesen Methoden passieren soll. So würde ich meine Werte als int speichern und beim Laden einfach in eine neue IntegerProperty umwandeln.
Dazu hat der InputStream z.B. eine readInt() Methode.

Was ich nicht ganz verstehe, wie sieht das mit der Reihenfolge aus? Ich kann ja nix x-beliebig nacheinander readInt() auf dem InputStream aufrufen. Es sind ja auch nicht nur Integer, sonder auch Doubles. Gibt es da eine Reihenfolge die ich einhalten muss? So einlesen wie geschrieben wurde, oder "von hinten" anfangen?

Ich habe leider keinerlei Ahnung davon, hoffe, ihr könnt mir weiterhelfen! :)

LG
GenerationLost
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
Was ich nicht ganz verstehe, wie sieht das mit der Reihenfolge aus? Ich kann ja nix x-beliebig nacheinander readInt() auf dem InputStream aufrufen. Es sind ja auch nicht nur Integer, sonder auch Doubles. Gibt es da eine Reihenfolge die ich einhalten muss? So einlesen wie geschrieben wurde, oder "von hinten" anfangen?
Du solltest genauso lesen, wie du auch geschrieben hast
 

GenerationLost

Mitglied
Danke, werde es mal ausprobieren!

Wie sieht das mit beliebig großen Listen aus? Die Liste als Objekt kann ich wohl auch nicht direkt einlesen, da deren Elemente ebenfalls Property-Attribute besitzen...
 

mrBrown

Super-Moderator
Mitarbeiter
Mach die Listenelemente Serializable und überschreib deren de/serialisierung, dann kannst du auch die Liste als ganzes serialisieren
 

GenerationLost

Mitglied
Geht dann auch sowas?

Code:
for (DoubleProperty d : times)
        {
            out.writeDouble(d.get());
        }

times ist eine ArrayList mit DoubleProperties.
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
Ja, du musst dir dann nur auch speichern, wie viele Objekte du schreibst. Einfacher wird das vermutlich sein, das in eine List<Double> zu wandeln und die zu speichern
 

GenerationLost

Mitglied
Also so?

Code:
ArrayList<Double> t = new ArrayList<Double>();
        for (DoubleProperty d : times)
        {
            t.add(d.get());
        }
        out.writeObject(t);
 
Zuletzt bearbeitet von einem Moderator:

GenerationLost

Mitglied
Sorry für den Doppelpost, das sind jetzt meine gesamten beiden Lese und Schreibmethoden einer Klasse:

Java:
private void writeObject(ObjectOutputStream out) throws IOException
    {
        out.defaultWriteObject();
        out.writeInt(getTotalAnswers());
        out.writeInt(getTotalCorrectAnswers());
        out.writeInt(getTotalWrongAnswers());
        out.writeInt(getSkippedWords());
        out.writeInt(getSessionCountTotal());
        out.writeInt(getSessionCountNormal());
        out.writeInt(getSessionCountTimed());
        out.writeInt(getSessionCountTimedVocab());
        out.writeInt(getTimedOutSessions());
        out.writeInt(getTimedOutWords());
        out.writeInt(getCredits());
        out.writeDouble(getBestTime());
        out.writeDouble(getAvgTime());
        out.writeDouble(getPercentCorrect());
      
        ArrayList<Double> t = new ArrayList<Double>();
      
        for (DoubleProperty d : times)
        {
            t.add(d.get());
        }
      
        out.writeObject(t);
    }
     
    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
    {
         // our "pseudo-constructor"
         in.defaultReadObject();
         // now we are a "live" object again, so let's run rebuild and start
         this.totalAnswers = new SimpleIntegerProperty(in.readInt());
         this.totalCorrectAnswers = new SimpleIntegerProperty(in.readInt());
         this.totalWrongAnswers = new SimpleIntegerProperty(in.readInt());
         this.skippedWords = new SimpleIntegerProperty(in.readInt());
         this.sessionCountTotal = new SimpleIntegerProperty(in.readInt());
         this.sessionCountNormal = new SimpleIntegerProperty(in.readInt());
         this.sessionCountTimed = new SimpleIntegerProperty(in.readInt());
         this.sessionCountTimedVocab = new SimpleIntegerProperty(in.readInt());
         this.timedOutSessions = new SimpleIntegerProperty(in.readInt());
         this.timedOutWords = new SimpleIntegerProperty(in.readInt());
         this.credits = new SimpleIntegerProperty(in.readInt());
         this.bestTime  = new SimpleDoubleProperty(in.readDouble());
         this.avgTime = new SimpleDoubleProperty(in.readDouble());
         this.percentCorrect = new SimpleDoubleProperty(in.readDouble());
       
         ArrayList<Double> t = (ArrayList<Double>)in.readObject();

         for (Double d : t)
         {
             this.times.add(new SimpleDoubleProperty(d));
         }
    }

Wäre das dann so richtig?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Custom Icon in den Systemsymbolen Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
Thallius Custom File Chooser Allgemeine Java-Themen 1
F Parser Framework/Plugin für Datei in Custom-Format Allgemeine Java-Themen 2
Bananabert Interface Custom 'Event' mit Interface Allgemeine Java-Themen 10
Tobse Input/Output Dateiformat: Serialisierung VS Custom format Allgemeine Java-Themen 6
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
S Hilfe bei der Cosinusapproximation Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben