Warum ist meine Klasse nicht serialisierbar?
Habe ich die folgende Klasse:
import java.awt.Color;
import java.util.Vector;
public class MyClass {
private ImageSignature imageSignature;
private class ImageSignature implements Serializable {
private static final long serialVersionUID = -6552319171850636836L;
private Vector<Color> colors = new Vector<Color>();
public void addColor(Color color) {
colors.add(color);
}
public Vector<Color> getColors() {
return colors;
}
}
//Will be called after imageSignature was set, obviously
public String getImageSignature() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(imageSignature);
oos.close();
return String(Base64Coder.encode(baos.toByteArray()));
}
}
Wenn ich versuche zu nennen getImageSignature()
bekomme ich NotSerializableException
- Warum ist das so? Alle Mitglieder, die serialisierbar sind, also warum bekomme ich diesen Fehler?
Ist die Farbe des Typs java.das awt.Farbe?
Getestet von code und es funktionierte ohne jedes problem. Habe Sie gereinigt und wieder aufgebaut und das komplette Projekt vor dem Start?
Ich kann auch nicht reproduzieren. Könnten Sie einen kompletten, lauffähigen Beispiel, das veranschaulicht das problem?
Okay ich denke ich habe einen Fehler bei weglassen der äußeren Klasse... ich aktualisierte die Frage, vielleicht ist es jetzt mehr Sinn macht?
java.awt.Color
und java.util.Vector
Getestet von code und es funktionierte ohne jedes problem. Habe Sie gereinigt und wieder aufgebaut und das komplette Projekt vor dem Start?
Ich kann auch nicht reproduzieren. Könnten Sie einen kompletten, lauffähigen Beispiel, das veranschaulicht das problem?
Okay ich denke ich habe einen Fehler bei weglassen der äußeren Klasse... ich aktualisierte die Frage, vielleicht ist es jetzt mehr Sinn macht?
InformationsquelleAutor Florian Peschka | 2012-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jede Instanz
ImageSignature
hat eine implizite Referenz auf die umschließende InstanzMyClass
, undMyClass
ist nicht serialisierbar.Entweder
MyClass
serializable, oder erklärenImageSignature
statisch:private
Eigenschaft vonMyClass
?Ich meine
private static class ImageSignature implements Serializable {...
InformationsquelleAutor NPE
Überprüfen Sie die unten info vom Java-Serialisierung Spec:
InformationsquelleAutor bchetty
Machen Klasse Serializable Sie implementieren sollten, Serlizable interface ist ein marker-oder tag-Schnittstelle, die keine Methode, so daß Ihre Klasse-Objekt sollte seralize
InformationsquelleAutor Mahmood