Serialisieren

Marc T.

Bekanntes Mitglied
Hallo Java-Gemeinde,

ich brauche eure Hilfe zum Thema serialisieren und damit zum Interface Serializable.

Man nutzt dieses Interface, wenn man Objekte mit Hilfe des ObjectOutputStream
in einer Datei speichern möchte. Ist das soweit korrekt?

Habe ich das richtig verstanden, dass alle Objekte die in meinem Objekt welches
ich speichern möchte stecken, auch das Interface Serializable implementieren müssen?

Beispiel:
------------
Ich möchte eine Liste per ObjectOutputStream in eine Datei speichern, die Liste implementiert
also Serializable. Müssen nun die Elemente der Liste auch Serializable implementieren?

Wozu benötige ich die serialVersionUID und worauf muss ich achten wenn ich sie
benutze?

Hoffe es ist nicht zu dreist so viele Fragen an euch zu richten und damit eure
wertvolle Zeit zu stehlen!

Grüße

Marc
 

Marc T.

Bekanntes Mitglied
Das ist klar, allerdings würde ich nicht Fragen wenn dadurch
alles geklärt wäre. Beispielsweise kann ich keine Aussage darüber
finden, ob sich die serialVersionUID für alle Objekte die Serializable
implementieren unterscheiden müssen oder ob sie gleich sein müssen.

Das einzige was ich dazu finden konnte war, dass wenn Objekte über
Netzwerke übertragen werden serialisierbar sein müssen und das
Sender und Empfänger das Objekt unter der gleichen serialVersionUID
kennen müssen.
 

faetzminator

Gesperrter Benutzer
Du kannst die UID manuell vergeben und von Hand anpassen. Die musst du immer ändern, wenn eine Version nicht mehr kompatibel zur alten ist. Wenn du keine vergiebst, dann wird irgendwas vergeben, die kann sich natürlich ändern (k.A. auf Grund von was der Compiler das entscheidet...).
Solange die UID übereinstimmt, versucht die JVM das serialisierte Objekt zu laden, ansonsten gibts eine Exception.
 

MR_UNIX

Bekanntes Mitglied
Sind in deiner Liste primitive oder komplexe Datentypen/Strukturen gespeichert?
Prinzipiell muss jedes Element der zu serialisierenden Klasse das Interface implementieren.

Man nutzt dieses Interface, wenn man Objekte mit Hilfe des ObjectOutputStream
in einer Datei speichern möchte. Ist das soweit korrekt?

Ja, das ist korrekt. Die Schnittstelle "Serializable" ist eine so genannte Markierungsschnittstelle. Intern wird durch den ObjectOuputStream per instanceof überprüft, ob man diese Klasse serialisieren darf.
 

Marc T.

Bekanntes Mitglied
Super mit den Infos kann ich schon einmal was anfangen ;)

Es handelt sich um komplexe Datenstrukturen.

D. H. nach der Aussage von faetzminator kann mir die serialVersionUID egal sein, wenn ich
meine Objekte auf der Festplatte speichere und bei jedem Speichervorgang die vorhandene
Datei überschreibe.

Könnt ihr mir noch sagen ob sich die serialVersionUID der Liste und derer Elemente unterscheiden
müssen oder ob sie gleich sein müssen (falls das für mich mal wichtig wird)?
 

MR_UNIX

Bekanntes Mitglied
Bei der ID geht es nur um die Klasse die du serialisieren willst und somit nur deine Liste. Die anderen gehen dich in dem Fall nichts an ;)
 

Marc T.

Bekanntes Mitglied
Ok, das heißt sowohl meine Liste, als auch die enthaltenen Element implementieren das
interface Serializable aber nur meine Liste definiert eine serialVersionUID (dann surpress
ich halt die Warnung das ich keine definiert habe in meinen Elementen ;)).

Vielen Dank für die netten Hilfen :)

Und zur Aussage von Marcinek:

Prinzipiell lassen sich alle Informationen die hier von Mitgliedern erfragt werden
"ergooglen", das Forum wäre also überflüssig ;).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Methoden Serialisieren Java Basics - Anfänger-Themen 17
H Interface Objekte speichern und laden (serialisieren/deserialisieren) Java Basics - Anfänger-Themen 1
J Serialisieren, aber wie? Java Basics - Anfänger-Themen 3
M Datum serialisieren Java Basics - Anfänger-Themen 1
T Array serialisieren Java Basics - Anfänger-Themen 8
H Serialisieren Java Basics - Anfänger-Themen 9
E Serialisieren Java Basics - Anfänger-Themen 2
F Input/Output Serialisieren/Deserialisieren Java Basics - Anfänger-Themen 18
D Serialisieren, was bringt das? Java Basics - Anfänger-Themen 8
P Serialisieren-deserialisieren Java Basics - Anfänger-Themen 18
F Serialisieren Java Basics - Anfänger-Themen 35
K Serialisieren mit Progress Java Basics - Anfänger-Themen 2
D Serialisieren/deserialisieren Java Basics - Anfänger-Themen 37
S JFrame mit JTextPane serialisieren Java Basics - Anfänger-Themen 5
W Objekt (de-)serialisieren Java Basics - Anfänger-Themen 5
G Serialisieren mehrerer Objekte in EINE (XML)-Datei Java Basics - Anfänger-Themen 12
E ArrayList mit eigenen typ serialisieren? Java Basics - Anfänger-Themen 1
R Objecte Serialisieren / Deserialisieren Java Basics - Anfänger-Themen 2
S Klassen Serialisieren Java Basics - Anfänger-Themen 5
V Objekt serialisieren/Deserialisieren und per get verschicken Java Basics - Anfänger-Themen 5
J Serialisierung - Array-Objekt serialisieren/deserialisieren Java Basics - Anfänger-Themen 6
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
M Serialisieren beim Schließen des Progs sicher beenden Java Basics - Anfänger-Themen 4
H Datei nach serialisieren leer ? Java Basics - Anfänger-Themen 10
G static var serialisieren möglich? Java Basics - Anfänger-Themen 4
Lulumann6 Serialisieren? Java Basics - Anfänger-Themen 9
artur.cichosz Objekt als String serialisieren Java Basics - Anfänger-Themen 7
M Problem beim Serialisieren Java Basics - Anfänger-Themen 7
S Generics serialisieren? Java Basics - Anfänger-Themen 2
C LinkedList serialisieren? Java Basics - Anfänger-Themen 22
G Color und String serialisieren Java Basics - Anfänger-Themen 2
G alle Instanzen einer Klasse serialisieren Java Basics - Anfänger-Themen 4
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
S Vector serialisieren Java Basics - Anfänger-Themen 4
C Objekt serialisieren Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben