Problem bei Serialisierung von Bibliotheks-Klassen

Alan47

Mitglied
Hallo Leute,

in meinem kleinen Software-Projekt habe ich vor kurzem meine selbst implementierten, behelfsmäßigen Datenstruktur-Klassen durch solche aus einer Java-Bibliothek ersetzt - das hat soweit ganz gut geklappt. Ein Problem ergibt sich aber beim Abspeichern der selbigen, denn mein Programm verwendet Serialisierung (vollkommen ausreichend für diese Anwendung) zum Abspeichern der Daten. Der Ersteller der Bibliotheks-Klassen hat es aber leider verabsäumt, seine Klassen das Interface "java.io.Serializable" implementieren zu lassen - die entsprechende Exception beim Versuch, die Daten zu serialisieren, ist die Folge.

Jetzt ist dieses Interface Serializable soweit ich weiß aber ein reines "Marker"-Interface ohne Inhalt und soll nur dazu dienen, serialisierbare Klassen zu kennzeichnen. Gibt es eine Möglichkeit, Java quasi dazu zu "zwingen", das gegebene Objekt zu serialisieren, unabhängig davon, ob das Interface "Serializable" implementiert wird oder nicht?

Und falls nein - gibt es elegante Ausweich-Möglichkeiten?


Gruß,


Alan
 

faetzminator

Gesperrter Benutzer
Ich müsste es selbst ausprobieren, aber was passiert, wenn du eine Subklasse dieser erstellst, und diese als serialisierbar kennzeichnest? Natürlich dürften dann in der Oberklasse so oder so keine nicht-serialisierbaren Felder (wie z.B. Streams) vorhanden sein.
Eine Umgehungslösung kenn ich nicht. Aber du könntest auf XML-Serialisierung o.ä. ausweichen. Wenn du das willst ;)
 
N

nillehammer

Gast
Nein, leider nicht. Wenn Du eine Instanz einer Klasse serialisieren möchtest, die nicht selbst Serializable implementiert, kannst Du den default Mechanismus nicht benutzen. Du musst dann readObject und writeObject selbst implementieren und selbst die Werte serialisieren/deserialiseren. Vom Ablauf sieht das dann undgefähr so aus:
writeObject:
- lies alle wichtigen Werte des nicht serialisierbaren Objekts aus und schreibe diese in den ObjectOutputStream
readObject:
- hol Dir die einzelnen Werte, erzeuge eine neue Instanz der nicht serialsierbaren Klasse und setze die Werte.
 

Alan47

Mitglied
Hallo,

danke für die Antworten, ich hatte bereits befürchtet, dass es nicht möglich ist, diese "Interface-Überprüfung" zu umgehen.

Die Situation ist folgende: es bringt mir leider nicht viel, eine Subklasse der Bibliotheksklasse (@faetzminator) zu erstellen, da es sich nicht um eine einzelne Klasse, sondern um ein ganzes Geflecht aus Klassen handelt, die allesamt (!) nicht als serialisierbar gekennzeichnet sind. Schon beim ersten Feld der abgeleiteten Klasse würde dann wiederum eine nicht-serialisierbare Klasse serialisiert werden müssen. Mit XML-Serialisierung hatte ich bislang noch nichts zu tun, wäre die absolute Notlösung, ich werde es im Hinterkopf behalten...

@nillehammer: Das Problem hier ist ein ähnliches wie bei der anderen Lösung mit der Subklasse: readObject und WriteObject müssten von den Bibliotheks-Klassen implementiert werden - und zwar rekursiv, wie ich die Sache verstehe. Es handelt sich aber wie gesagt leider nicht um eine einzelne Klasse, sondern um rund 20 - 50 Klassen, die Felder enthalten, die wiederum andere Bibliotheksklassen referenzieren.


Da ich wenigstens in der (zweifelhaft) glücklichen Lage bin, den Quellcode für die Bibliotheksklassen zu haben, könnte ich natürlich in jeder Klasse das "implements Serializable" dazu kleben und die Bibliothek dann einmal neu kompilieren, aber da es ziemlich viele Klassen sind und leider nicht alle von derselben Grund-Klasse erben, könnte es eine langwierige Angelegenheit werden. Aber in Anbetracht der Alternativen ist es glaube ich trotz allem das Einfachste, auch wenn ich gehofft hätte, es gäbe eine simplere Möglichkeit.


Vielen Dank für eure schnellen Antworten!



Alan
 

Alan47

Mitglied
Hallo nochmal,

also ich habe inzwischen die Bibliotheks-Klassen umgeschrieben, so dass sie Serializable implementieren und es funktioniert jetzt auch so wie es soll ;)
Zur Erklärung: es handelt sich bei dieser Bibliothek um einen Java-Source-Code-Parser, der von einem Tool (JavaCC) erstellt wurde und noch von einer Person editiert wurde, damit auch der Abstrakte Syntax-Baum korrekt und halbwegs benutzerfreundlich erstellt wird. Genau dieser sollte serialisiert werden - darum waren es so viele Klassen. Inzwischen habe ich die "implements Serializable"s und die Serial Version UIDs eingefügt und es läuft wie es soll.

@Tomate_Salat: Von "json" habe ich jetzt noch nie etwas gehört, aber ich werde es mir bei Gelegenheit mal ansehen, danke :)


Gruß,


Alan
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Problem mit Serialisierung Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
J "Problem Objektorientierung" Allgemeine Java-Themen 20
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
RalleYTN META-INF/services Problem Allgemeine Java-Themen 3
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben