# Sinn des Serializable Interfaces



## fleckdalm (22. Apr 2012)

Der Titel sagt eigentlich schon alles;-) 
Warum muss man zum serialisieren erst das serializable Interface implementieren? Ohme wäre doch alles viel einfacher, besonders wenn eine Verwendete Klasse das Interface nicht implementiert hat gibt es nämlich nur probleme... 
Achja und wenn ich schon mal dabei bin: 
Man kann in den zu serialisierenden Klassen ja die Methoden read und write object erstellen die dann beim serialisieren aufgerufen werden. Aber diese methoden werden ja nicht überschrieben sondern einfach erstellt, wie funktioniert das intern das er weiß das ich diese Methoden erstellt habe... Das nur so rein aus Interesse;-) 
Grüße fleckdalm


----------



## Marcinek (22. Apr 2012)

> The serialization interface has no methods or fields and serves only to identify the semantics of being serializable.



Serializable (Java Platform SE 6)

Zu dem zweiten: Welches Framework zumserialisiren nutzt du?


----------



## Fant (22. Apr 2012)

Vielleicht reicht dir das hier ja schon als Erklärung:
Markierungsschnittstelle ? Wikipedia

Gruß Fant


----------



## fleckdalm (22. Apr 2012)

Danke für die Antworten!
Ich benutze kein spezielles Framework zum Serialisieren sondern einfach die Klasse ObjectOutoutStream!
Mir ist schon klar das Serializable zur "kennzeichnung" ist aber wäre es ohne den Zwang das Interface zu implementieren nicht viel einfacher?


----------



## Marcinek (22. Apr 2012)

Musst du ja auch nicht.


----------



## fleckdalm (22. Apr 2012)

Natürlich muss ich es implementieren, sonst wird beim Serialsieren eine Exception geworfen!;-)


----------



## Marcinek (22. Apr 2012)

Gilt erstmal nur für die Java Serialisation API:

Discover the secrets of the Java Serialization API

Wenn du dich selber um die Serialisierung kümmerst, dann braucht man das nicht.


----------



## irgendjemand (22. Apr 2012)

der grund dahinter ist das man nun mal nich alles serialisieren kannst ...

du kannst z.b. keine "Socket" instanz speichern ... hätte auch keinen sinn ... da hier eben SourceIP:SourcePort und DestIPestPort auch noch ganz andere , protokoll-interne werte wie flags, stream-positionen und der gleichen mit serialisiert werden müssten ...
auch alles was in Socket referenziert ist ... wie z.b. die beiden streams ... oder eben der LocalPort ...

es würde also überhaupt keinen sinn machen "Socket" zu serialiseren ... und damit dieses eben "sauber" abgefangen werden kann wird auf das Marker-Interface "Serializable" gecheckt ... und wenn dies nicht implementiert wird halt die Exception geworfen ...

der sinn hinter diesem Interface ist nun mal zu kennzeichnen ob man eine klasse serialisieren kann oder nicht ... mit dem hintergrund das es bei den meisten klassen die dieses interface nicht implementieren auch gar kein sinn machen würde ...

wenn es dieses interface nicht geben würd eund du wahllos einfach alles serialisieren könntest ... überleg mal was du dann für ein chaos anrichten könntest wenn du diesen ganzen "mist" wieder deserialisierst ...


----------



## fleckdalm (22. Apr 2012)

Ok, Danke! Jetzt ist mir der Sinn des Interfaces halbwegs klar;-) 
Weiß noch wer was bezüglich der Methoden?
Grüße fleckdalm


----------

