"Hello, Amigo! May dagdag pa sana ako sa sinabi sayo ni Ellie."

Minsan kailangan mong kontrolin ang proseso ng serialization. Narito ang ilan sa mga dahilan kung bakit:

1) Ang isang bagay ay hindi handa para sa serialization : ang kasalukuyang panloob na estado nito ay nasa proseso ng pagbabago.

2) Ang isang bagay ay naglalaman ng mga bagay na hindi mase-serye, ngunit maaaring i-convert ang mga ito sa isang form na madaling ma-serialize , hal. i-save ang mga ito bilang isang byte array o iba pa.

3) Gusto ng isang object na i-deserialize ang lahat ng data nito bilang isang unit at/o i-encrypt ito bago ang serialization.

Maraming dahilan kung bakit maaaring gusto mong manu-manong magsagawa ng serialization. Ngunit hindi namin nais na mawala ang lahat ng mga pakinabang na inaalok ng karaniwang serialization. Pagkatapos ng lahat, ang aming bagay ay maaaring gumamit ng iba pang mga bagay. Ngunit hindi sila mai-serialize kung hindi sinusuportahan ng aming object ang serialization.

Ang sitwasyong ito ay mayroon ding solusyon: ang Externalizable interface. Dapat nating pasalamatan ang mga visionary creator ng Java. Palitan lang ang Serializable na interface ng Externalizable na interface, at ang iyong klase ay maaaring manu-manong pamahalaan ang proseso ng serialization.

Ang Externalizable interface ay may dalawang pamamaraan, na hindi ginagawa ng Serializable interface, na tinatawag ng Java machine kapag ang isang object ay serialized. Ganito ang hitsura nito:

Code
class Cat implements Externalizable
{
 public String name;
 public int age;
 public int weight;

 public void writeExternal(ObjectOutput out)
 {
  out.writeObject(name);
  out.writeInt(age);
  out.writeInt(weight);
}

 public void readExternal(ObjectInput in)
 {
  name = (String) in.readObject();
  age = in.readInt();
  weight = in.readInt();
 }
}

Paalalahanan ka ng kahit ano?

"Holy moly! Ganito mismo ang sinubukan naming i-save ang mga bagay bago namin isaalang-alang ang serialization."

"Pinapasimple nito ang lahat: kung sapat ang karaniwang serialization, minana lang namin ang Serializable na interface. Kung hindi ito sapat, minana namin ang Externalizable at isusulat namin ang sarili naming code para i-save/i-load ang aming object."

"Ngunit ang klase ba na may markang Externalizable ay itinuturing na serializable? Maaari ba nating gamitin ang ganoong klase para "ligtas" na mag-imbak ng mga sanggunian sa aming mga serializable na klase?"

"Oo. Kung ang isang klase ay nagpapatupad ng Serializable o Externalizable , ito ay itinuturing na serializable."

"Ito ang perpektong solusyon. Gusto ko ito."

"I'm happy to hear that. But there's more to it... You should ask Professor Hans about all the nuances. Tiyak na umiiral ang mga ito. Gusto niyang bigyan ka ng isang bagay na babasahin."