English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
シリアライズと外部化は、オブジェクトをストリームバイトに変換し、バイトストリームをデータベースやメモリに保存するプロセスです。java.io.Serializableインターフェースを実装したクラスはシリアライズできます。また、アプリケーションの要件に応じて、カスタムシリアライズに外部化が使用されます。外部化はjava.io.Serializableを拡張します。
シリアル番号 | キー | シリアライズ | 外部化 |
---|---|---|---|
1 | インターフェース | シリアライズはタグインターフェースです。 | 外部化にはreadExternalおよびwriteExternalという2つのメソッドが含まれています。 |
2 | 実現ロジック | このインターフェースを実装するクラスは、シリアライズまたは永続化の責任をJavaに任せます。JVMはreadObjectおよびwriteObjectを使用してシリアライズを行います。 | 外部化は、readExternalおよびwriteExternalメソッドをオーバーライドしてアプリケーションに実現ロジック制御を提供します。 |
3 | 変数を無視する方法 | シリアライズ中に、JVMは瞬間変化する変数を無視してJavaオブジェクトのシリアライズおよびデシリアライズを行います。 | プログラマーは、Javaオブジェクトの外部化プロセス中に一部の変数を無視する独自のロジックを記述できます。 |
4 | パフォーマンス | シリアライズ可能なインターフェースでは、反射を使用するとパフォーマンスが低下します。 | 外部化は実施方法を完全に制御できます。 |
5 | 継承されたオブジェクトのシリアライズ | 1スーパークラスがシリアライズできない場合でも、子クラスはシリアライズできます。 2子クラスがシリアライズされていないが、スーパークラスが自動的にシリアライズされている場合 | それを外部化にも適用できます。 |
class ExternalizableExample implements Externalizable { Integer id; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(id); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); } }
class SerializableExample implements Serializable { private static final long serialVersionUID = 5081877L; String name; }