English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La sérialisation et l'externalisation sont des processus consistant à convertir des objets en flux de bytes et à stocker ces flux de bytes dans une base de données ou en mémoire. Les classes implémentant l'interface java.io.Serializable peuvent être sérialisées. D'autre part, selon les exigences de l'application, l'externalisation est utilisée pour la sérialisation personnalisée. L'externalisation étend java.io.Serializable.
Numéro | Clé | Sérialisation | Externalisation |
---|---|---|---|
1 | Interface | La sérialisation est une interface marquante | L'externalisation contient deux méthodes readExternal et writeExternal. |
2 | Logique de mise en œuvre | Les classes implémentant cette interface transfèrent la responsabilité de la sérialisation ou de la persistance au JVM. Le JVM utilise readObject et writeObject pour la sérialisation | L'externalisation fournit une logique de contrôle de mise en œuvre pour l'application en redéfinissant les méthodes readExternal et writeExternal. |
3 | Méthodes pour ignorer les variables | Dans la sérialisation, le JVM ignore les variables transitoires pendant la sérialisation et la désérialisation des objets Java. | Les programmeurs peuvent écrire leur propre logique pour ignorer certaines variables du processus d'externalisation des objets Java. |
4 | Performances | Dans l'interface sérialisable, l'utilisation de la réflexion entraîne une réduction des performances. | L'externalisation permet un contrôle complet de la mise en œuvre. |
5 | Serialisation d'objets hérités | 1. Si la super-classe n'est pas sérialisée, la sous-classe peut tout de même être sérialisée. 2. Si la sous-classe n'est pas sérialisée mais que la super-classe est sérialisée automatiquement | Nous pouvons également l'appliquer à l'externalisation. |
class ExternalizableExample implements Externalizable { Integer id; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(id); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); } }
class SerializableExample implements Serializable { private static final long serialVersionUID = 5081877L; String name; }