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