So serialisieren Sie eine generische Klasse in Java?
Habe ich zu Lesen begann, über die Serialisierung in Java und bisschen auch in anderen Sprachen, aber was ist, wenn ich eine generische Klasse und ich wollen zum speichern einer Instanz in die Datei.
code-Beispiel
public class Generic<T> {
private T key;
public Generic<T>() {
key = null;
}
public Generic<T>(T key) {
this.key = key;
}
}
Was ist der beste Weg, um zu sparen diese Art von Objekt? (Natürlich gibt es mehr in meiner realen ceneric Klasse, aber ich Frage mich nur die eigentliche Idee).
- Genau wie jede andere Klasse: machen Sie es implementieren, die
Serializable
- Schnittstelle:)
- manchmal ist es nicht möglich, die Klasse zu wechseln. Wahrscheinlich ist das hier nicht der Fall 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du müssen um generische Klasse
Serializable
wie gewohnt.public class Generic<T> implements Serializable {...}
Wenn die Felder deklariert sind, die Verwendung generischer Typen, Sie wollen vielleicht, um anzugeben, dass Sie implementieren sollten
Serializable
.public class Generic<T extends Serializable> implements Serializable {...}
Bitte beachten Sie die Seltenheit Java-syntax hier.
public class Generic<T extends Something & Serializable> implements Serializable {...}
Serializable
bricht Kapselung und information hiding; alle private und package-private member ein Teil von der Klasse exportiert-API. Dies führt zu potenziellen Sicherheitsrisiken und kann die Klasse mehr zerbrechlich. Die Entscheidung zur UmsetzungSerializable
sollte mit großer Sorgfalt erfolgen und die serialisierte form sollten sorgfältig gestaltet (Efffective Java, 2nd Ed.).Wenn Sie nicht wollen (oder können), implementieren das Serializable-interface kann mit XStream. Hier ist eine kurze tutorial.
In Ihrem Fall:
Serializable
ist die UmsetzungExternalizable
(die selbst erstreckt sichSerializable
).