Serialisierung von Objektreferenzen

Friesi

Erfahrenes Mitglied
Hallo!

Ich versuche derzeit Objekte zu serialisieren, doch leider funktioniert das nicht ganz so wie ich will.

Es gibt eine Klasse Graph:
Java:
import java.util.*;
import java.io.Serializable;

public class Graph implements Serializable
{
    static final long serialVersionUID = 1;
    private static Vector<Ort> Orte = new Vector<Ort>();

   // (...) weitere set und get Methoden
}

Im Vector Orte sind wieder Objekte vom Typ Ort und Weg.

Mit der Klasse Serialisierung versuche ich Graph zu serialisieren:

Java:
import java.io.*;
import java.util.*;

public abstract class Serialisierung {

    //Graph serialisieren
    public static void serialisieren(Graph g) {
        try {
            FileOutputStream fs= new FileOutputStream(Routenplaner.DATEI);
            ObjectOutputStream os= new ObjectOutputStream(fs);
            os.writeObject(g);
                        os.flush();
            os.close();   
                        
        } catch(IOException e) {
                       // Ausgabe
        }
    }
        
    //Graph deserialisieren
    public static Graph deserialisieren() {
        try {
            FileInputStream fs= new FileInputStream(Routenplaner.DATEI);
            ObjectInputStream is= new ObjectInputStream(fs);
            Graph g2 = (Graph) is.readObject();
            is.close();
            return g2;
                        
        } catch(IOException e) {
                       // Ausgabe
                        
        } catch(ClassNotFoundException e) {
                       // Ausgabe
        }
    return null;
    }
}

In Routenplaner.DATEI steht "/tmp/graph.ser"

Sobald ich also Graph serialisiere wird eine Datei angelegt die 26 byte groß ist!
In dieser wird zwar der Vector gespeichert aber nicht die Inhalte, also die Objekte in dem Vector.
Ist es möglich diese mit zu serialisieren?

Bin solangsam am verzweifeln :confused:
 
Hallo,

die Klassen Ort und Weg müssen auch das Interface implementieren. Dann sollte es eigentlich funktionieren.

MFG

zEriX
 
die Klassen Ort und Weg müssen auch das Interface implementieren. Dann sollte es eigentlich funktionieren.

Sorry hab ich ganz vergessen :)
Da ist das Interface natürlich implementiert:

class Ort:
Java:
import java.util.*;
import java.io.Serializable;

public class Ort implements Serializable //Knoten
{
    static final long serialVersionUID = 1;
    private String Name;
    private Vector<Weg> vonhierWeg = new Vector<Weg>();
    public static int AnzahlOrte = 0;

    // (...) weiterer code
}

class Weg:
Java:
import java.io.Serializable;

public class Weg implements Serializable //Kante 
{
    static final long serialVersionUID = 1;
    protected int Laenge;
    protected Ort Zielort;
    protected Ort Start;

     // (...) weiterer code
}

Trotzdem wird der Inhalt von Vector<Ort> nicht serialisiert :/
 
Zurück