Sérialisables, Développeurs Android

La sérialisation d'une classe est activée par la classe qui implémente l'interface java.io.Serializable. Les classes qui ne mettent pas en œuvre cette interface pas de leur état sérialisé ou désérialisé. Tous les sous-types d'une classe sérialisable sont eux-mêmes sérialisable. L'interface de sérialisation n'a pas de méthode ou de champs et ne sert qu'à définir la sémantique d'être serializable.

Au cours de désérialisation, les champs de classes non sérialisables seront initialisés avec le public ou protégé sans arg constructeur de la classe. Un constructeur sans arg doit être accessible à la sous-classe sérialisable. Les champs des sous-classes sérialisables seront restaurées à partir du flux.

Les classes qui nécessitent un traitement spécial au cours du processus de sérialisation et désérialisation doivent mettre en œuvre des méthodes spéciales avec ces signatures exactes:

La méthode writeObject est responsable de la rédaction de l'état de l'objet pour sa classe particulière de telle sorte que la méthode readObject correspondante peut restaurer. Le mécanisme par défaut pour enregistrer les champs de l'objet peut être invoqué en appelant out.defaultWriteObject. La méthode n'a pas besoin de se préoccuper de l'Etat appartenant à ses superclasses ou sous-classes. État est enregistré en écrivant les champs individuels à l'aide de la méthode ObjectOutputStream writeObject ou en utilisant les méthodes pour les types de données primitives pris en charge par DataOutput.

les classes sérialisables qui doivent désigner un objet alternatif à utiliser lors de l'écriture d'un objet au courant devrait mettre en œuvre cette méthode spéciale avec la signature exacte:

Cette méthode de writeReplace est invoquée par sérialisation si la méthode existe et il serait accessible à partir d'une méthode définie dans la classe de l'objet sérialisé. Ainsi, la méthode peut avoir un accès privé, protégé et paquet-privé. l'accès à la sous-classe cette méthode suit les règles d'accessibilité java.

Les classes qui doivent désigner un remplaçant lorsqu'une instance de celui-ci est lue à partir du flux devraient mettre en œuvre cette méthode spéciale avec la signature exacte.

Cette méthode de readResolve suit les mêmes règles d'invocation et les règles d'accessibilité comme writeReplace.

Mettre en œuvre Serializable Judicieusement

Reportez-vous au chapitre de Effective Java sur sérialisation pour une couverture complète de l'API de sérialisation. Le livre explique comment utiliser cette interface sans nuire à la maintenabilité de votre application.

Alternatives recommandées

JSON est concise, lisible par l'homme et efficace. Android inclut à la fois une API de diffusion en continu et une API d'arbre pour lire et écrire JSON. Utilisez une bibliothèque de liaison comme GSON à lire et à écrire des objets Java directement.

Cette classe requiert un niveau API ou supérieur

Ce document est caché parce que votre niveau de l'API sélectionné pour la documentation. Vous pouvez modifier le niveau de l'API de documentation avec le dessus de la navigation de gauche.

Pour plus d'informations sur la spécification du niveau de l'API de votre application nécessite, lire l'appui de différentes versions de la plate-forme.

Articles Liés