Comment sérialiser une classe générique en Java?
J'ai commencé à lire sur la sérialisation en Java et un peu dans d'autres langues, mais que faire si j'ai une classe générique et je veux enregistrer une instance de fichier.
exemple de code
public class Generic<T> {
private T key;
public Generic<T>() {
key = null;
}
public Generic<T>(T key) {
this.key = key;
}
}
Quel est le meilleur moyen pour enregistrer ce genre d'Objet? (Bien sûr, il est plus dans ma vraie ceneric classe, mais je me demandais simplement l'idée même.)
Tout comme toute autre classe: faire mettre en œuvre les
parfois, il n'est pas possible de changer de classe. Sans doute pas le cas ici 😉
Serializable
interface :)
parfois, il n'est pas possible de changer de classe. Sans doute pas le cas ici 😉
OriginalL'auteur Leolian | 2013-05-31
Vous devez vous connecter pour publier un commentaire.
Vous besoin pour faire classe générique
Serializable
comme d'habitude.public class Generic<T> implements Serializable {...}
Si les champs sont déclarées à l'aide de types génériques, vous peut vouloir de préciser qu'ils doivent mettre en œuvre
Serializable
.public class Generic<T extends Serializable> implements Serializable {...}
S'il vous plaît être conscient de rare la syntaxe Java ici.
public class Generic<T extends Something & Serializable> implements Serializable {...}
La mise en œuvre de
Serializable
pauses d'encapsulation et de se cacher de l'information; tous les particuliers et les colis-privé, les membres deviennent une partie de la classe de l'API exportées. Cela introduit des failles de sécurité potentielles et peut faire la classe la plus fragile. La décision de mettre en œuvreSerializable
doit être faite avec le plus grand soin et la forme sérialisée devrait être conçu avec soin (Modique Java, 2nd Ed).OriginalL'auteur Grzegorz Żur
Si vous ne voulez pas (ou ne peut) pas implémenter l'interface Serializable, vous pouvez utiliser XStream. Voici une courte tutoriel.
Dans votre cas:
Serializable
est de mettre en œuvreExternalizable
(qui elle-même s'étendSerializable
).OriginalL'auteur Burkhard