私はこれらの記事を読みましたSO
:
JavaのSerializableとExternalizableの違いは何ですか? .
しかし、私の質問はExternalizable
、serializable
.
と の独自の実装を与えることで、実装するをカスタマイズすることができSerialization
ます。次に、実装を使用およびカスタマイズする目的は何 ですか。を使用する本当の利点は何ですか。カスタムをサポートしているというさまざまなリンクを読みました(上記のものを含む)。しかし、 が明確な勝者である例や、 を使用して実行できない例は見当たりません。これに関する例を見るといいでしょう。class
Serializable
writeObject
readObject
Externalizable
ReadExternal
writeExternal
Externalizable
Externalizable
serialization
Externalizable
Serializable
より明確にするために、次のスニペットはhereから抽出されています。
がclass
実装されると、これらのをシリアル化できるというSerializable interface
情報が に提供されます。それに伴い、特記事項として、JVM
instances
classes
JVM
「Serializable を実装するクラスで次の 2 つのメソッドを探します。見つかった場合はそれを呼び出し、シリアル化プロセスを続行するか、標準のシリアル化プロトコルに直接従ってください」
したがって、これにより、次の 2 つのメソッドを作成する機会が得られます。
private void writeObject(ObjectOutputStream out) throws IOException;
、
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
Class
その実装内でSerializable
、プロセスへのフックを取得しserialization
ます。これら 2 つのメソッド内にカスタム コードを記述して、 の標準動作をカスタマイズできますserialization
。