HashMap serialisieren

TheWizardOfOz

Grünschnabel
Hallo,
Ich will eine HashMap serialisieren, allerdings bin ich auf ein paar Probleme gestoßen. Zuerst hatte ich die Serialisierung mit FileInputStream und FileOutputStream benutzt, allerdings hatte ich Probleme mit der serialVersionUID, da sich die Struktur der Klasse geändert hat.

Deswegen hab ich es mit einer Serialisierung mit XML versucht, aber bei
Code:
XMLDecoder decoder = new XMLDecoder(new FileInputStream("profiles.xml"));
profileMap = HashMap<Integer, Profile> decoder.readObject();
bekomme ich bei der zweiten Zeile die Fehler

Profile cannot be resolved or is not a field
HashMap cannot be resolved to a variable
Syntax Error on token ",", . expected

und ich habe keine Ahnung warum.

1. Was habe ich falsch gemacht?
2. Gibt es vielleicht eine einfachere/bessere Möglichkeit für die Serialisierung einer einzelnen HashMap?

Vielen Dank für jegliche (hilfreiche) Kommentare ;)
 
Das kann so doch auch nicht funktionieren, die zweite Zeile deines Codes müsste lauten:
Java:
HashMap<Integer, Profile> profileMap = (HashMap<Integer, Profile>) decoder.readObject();
Ich bekomme hier momentan als Ausgabe für die Map nur ein
<object class="java.util.HashMap"/>
für die Map, sobald als Key Value ein Objekt meines eigenen Datentyps angegeben wird, bei <Integer, Integer> Maps funktioniert der Code... Wenn dir das hilft, schaue ich morgen noch mal!

mfg,
RoCMe
 
Also jetzt bekomme ich beim compilen 2 Mal

java.lang.InstantiationException: Profile
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...

Ich poste mal meine serialize und deserialize Methode, vielleicht hilft es ja:
Code:
public static void serialize() {
	try {
			XMLEncoder encoder = new XMLEncoder(new FileOutputStream("profiles.xml"));
			encoder.writeObject(profileMap);
			encoder.close();
	}
	catch (IOException e) {
		System.err.println(e);
	}
}

public static void deserialize() {
	try {
		XMLDecoder decoder = new XMLDecoder(new FileInputStream("profiles.xml"));
		profileMap = (HashMap<Integer, Profile>) decoder.readObject();
	}
	catch (IOException e) {
		System.err.println(e);
	}
}
 
Zurück