2009-06-22 8 views

Répondre

4

En fait, la différence entre Serializable et Externalizable est que les classes qui mettent en œuvre Serializable, la sérialisation de l'objet est pris en charge automatiquement, tandis que les classes qui implémentent Externalizable est responsable de lui-même sérialisation, sans l'aide des procédures de sérialisation par défaut.

La spécification API pour l'interface Externalizable et l'interface Serializable fournissent d'autres informations. A partir de la documentation d'interface Externalizable:

Seule l'identité de la classe d'un exemple Externalizable est écrit dans le flux de sérialisation et il est de la responsabilité de la classe pour sauver et restaurer le contenu de ses instances . Le writeExternal et méthodes readExternal de la l'interface Externalizable sont mises en œuvre par une classe pour donner le contrôle complet de la classe sur le format et le contenu du flux pour un objet et ses supertypes.

L'article Discover the secrets of the Java Serialization API a une discussion sur l'interface Externalizable dans "Créer votre propre protocole: l'interface Externalizable" section.

3

Je recommande de lire un article intitulé Understand When to Serialize v. Externalize Objects in Java qui décrit les différences entre la sérialisation et l'externalisation.

est d'abord décrit ce sérialisation est:

La sérialisation d'objets Java vous permet de faire une séquence d'octets de tout objet qui a mis en œuvre l'interface Serializable; il vous permet également de retourner cette séquence d'octets dans un objet.

Ensuite, il décrit une situation dans laquelle extériorisation pourrait être préférable de sérialisation:

Il pourrait y avoir des moments où vous avez exigences particulières pour la sérialisation d'un objet. Pour par exemple, vous pouvez avoir certains pièces sensibles à la sécurité de l'objet , comme les mots de passe, que vous faites ne veulent pas conserver et transférer quelque part. Ou, il peut être sans valeur à enregistrer un objet particulier référencé à partir de l'objet principal, car sa valeur deviendra sans valeur après la restauration.

Vous pouvez contrôler le processus de sérialisation en mettant en œuvre la Interface Externalizable au lieu de Serializable. Cette interface étend l'interface sérialisable d'origine et ajoute writeExternal() et readExternal(). Ces deux méthodes seront automatiquement appelées dans la sérialisation de votre objet et la désérialisation , ce qui vous permet de contrôler l'ensemble du processus .

Je recommande de lire l'article en entier, car les extraits ci-dessus ne couvrent pas les détails. L'article contient également plusieurs extraits de code susceptibles de vous intéresser.

+0

brisé le lien ...... –

+0

Correction du lien, merci! –

Questions connexes