2

私はこれらの記事を読みましたSO:

外部化可能またはシリアライズ可能?

JavaのSerializableとExternalizableの違いは何ですか? .

しかし、私の質問はExternalizableserializable.

と の独自の実装を与えることで、実装するをカスタマイズすることができ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

4

1 に答える 1

0

Serializable と Externalizable の主な違いは、Serializable が基本クラスを自動的に処理することです。Externalizable は、すべての作業をあなたに任せます。

于 2014-02-27T21:31:04.180 に答える