Qu'est-ce que l'externalisation en Java et quand l'utiliser?

L'externalisation en Java est utilisée pour enregistrer une classe Java dans un flux d'octets. Une classe qui doit être externalisée doit implémenter une interface externalisable.

Sérialisation Java n'est pas très efficace. Sivous sérialisez des objets gonflés ayant beaucoup d'attributs et de propriétés, vous ne souhaitez pas sérialiser. C'est là qu'intervient l'externalisation en Java. Cet article vous aidera à comprendre le fonctionnement de l'externalisation.



Commençons!



Qu'est-ce que l'externalisation en Java?

L'externalisation en Java est utilisée chaque fois que vous devez personnaliser le sérialisation mécanisme. Si une classe implémente une interface externalisable, la sérialisation de l'objet se fera à l'aide de la méthode writeExternal () . Lorsqu'un objet externalisable est reconstruit à l'extrémité du récepteur, une instance sera créée en utilisant un constructeur sans argument et cette méthode est appelée readExternal ().

surcharge de fonction dans l'exemple C ++

Cela sert essentiellement l'objectif de la sérialisation personnalisée, où vous pouvez décider de ce que vous souhaitez stocker dans un flux.



Quand utilisez-vous l'externalisation?

Si vous ne souhaitez sérialiser qu'une partie d'un objet , alors l'externalisation est la meilleure option. Vous devrez sérialiser uniquement les champs obligatoires d'un objet.

Qu'est-ce que l'interface d'externalisation?

Si vous souhaitez contrôler le processus de lecture et d’écriture des objets pendant le processus de sérialisation et de désérialisation, vous devez avoir implémenté l’interface par la classe de l’objet. java.io.Externalizable . Ce n'est qu'alors que vous pouvez implémenter votre propre code pour lire et écrire les états de l'objet. Les méthodes, readExternal () et writeExternal () sont définis par le Extériorisable interface .

Comprenons ces méthodes en détail.



readExternal (ObjectInput dans)

L'objet de l'interface implémente cette méthode qui aide à restaurer son contenu en appelant les méthodes deEntrée de donnéespour les types primitifs. Il appelle égalementreadObjectpour les objets, les chaînes et les tableaux. Voyons maintenant comment implémenter cette méthode readExternal.

Comme ça readExternal () méthode prend un Entrée d'objet , vous pouvez utiliser sa méthode pour lire les états de l'objet à partir du flux sous-jacent de ces règles:

java conversion binaire en décimal
  • Pour les types primitifs, vous pouvez utiliser le readXXX () méthodes de la Entrée de donnéesinterface. Ils sont à savoir, readBoolean (), readByte (), readInt (), readLong ().
  • Si vous avez des types d'objets tels que des chaînes, des tableaux, l'un de vos Des classes , vous utilisez le readObject () méthode.

Exemple:

public void readExternal (ObjectInput in) jette ClassNotFoundException, IOException {this.code = in.readInt () this.name = (String) in.readObject () this.password = (String) in.readObject () this.birthday = ( Date) in.readObject ()}

Comme vous pouvez le voir ici, j'ai désérialisé les attributs suivants: code, nom, mot de passe et anniversaire.

writeExternal (ObjectOutput out)

L'objet de l'interface implémente cette méthode afin de sauvegarder le contenu en appelant les méthodes de DataOutput pour les valeurs primitives ou en appelant le writeObject méthode d'ObjectOutput pour les objets, les chaînes et les tableaux. Voyons maintenant le processus de mise en œuvre.

Comme ça writeExternal () méthode prend unObjectOutput, vous pouvez utiliser sa méthode pour écrire les états de l'objet dans le flux sous-jacent en suivant ces règles:

  • Pour les types primitifs, utilisez le writeXXX () méthodes de la Sortie de donnéesinterface, comme writeBoolean (), writeByte (), writeInt (), writeLong (), etc.
  • Pour les types d'objets comme , tableaux , vos classes personnalisées, vous pouvez utiliser le writeObject () méthode.

Exemple:

public void writeExternal (ObjectOutput out) jette IOException {out.writeInt (code) out.writeObject (name) // écrire un mot de passe vide: out.writeObject ('') out.writeObject (birthday)}

Cependant, ici, vous pouvez voir que j'ai sérialisé les attributs suivants: code, nom, mot de passe et anniversaire.

À présent, passons à la rubrique suivante de cet article sur l'externalisation en Java, abordons les principales différences entre l'externalisation et la sérialisation en Java.

qu'est-ce que bean en java

Externalisation vs sérialisation: Différence entre l'externalisation et la sérialisation

C'est l'une des questions les plus fréquemment posées .

ParamètresExtériorisationSérialisation
ProcessusUtilise le processus de sérialisation personnaliséUtilise le processus de sérialisation par défaut
UIDPas besoin d'UIDIl a besoin de serialVersionUID
Espace de rangementVous devez stocker les données qui ont un objetVous pouvez stocker l'objet directement
AccèsL'interface externalisable offre un contrôle complet du processus de sérialisation à l'application.
Pas un tel accès

J'espère que vous êtes clair avec l'externalisation vs la sérialisation. Donc avec cela, nous arrivons à la fin de cet article sur «l'externalisation en Java». J'espère que vous êtes clair avec les sujets partagés avec vous.

J'espère que le contenu mentionné ci-dessus s'est avéré utile pour améliorer votre connaissance. Continuez à lire, continuez à explorer!

Consultez également par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java. Le cours est conçu pour vous donner une longueur d'avance dans la programmation Java et vous former aux concepts Java de base et avancés ainsi que divers comme Hibernate & Spring.