シリアル化とは、オブジェクトの状態情報を保存または送信できるフォームに変換するプロセスです。一般に、オブジェクトは、アーカイブや引用バッファーなどのストレージメディアに保存されます。ネットワーク伝送中、バイトやXMLなどの形式にすることができます。バイトまたはXMLエンコード形式は、完全に等しいオブジェクトを復元できます。この反対のプロセスは、脱介入とも呼ばれます。
Javaオブジェクトのシリアル化と降下<br /> Javaでは、多くの方法でオブジェクトを作成でき、オブジェクトがリサイクルされない限りオブジェクトを再利用できます。ただし、すべてを作成するJavaオブジェクトは、JVMのヒープメモリに存在します。これらのオブジェクトは、JVMが実行状態にある場合にのみ存在します。 JVMの実行が停止すると、これらのオブジェクトの状態が失われます。
ただし、実際のアプリケーションシナリオでは、これらのオブジェクトを維持し、必要に応じてオブジェクトを読み直すことができる必要があります。 Javaオブジェクトのシリアル化は、この機能の実装に役立ちます。
オブジェクトのシリアル化メカニズムは、Java言語の組み込みオブジェクト永続性方法です。オブジェクトのシリアル化により、オブジェクトの状態はバイト配列として保存でき、このバイト配列は、必要に応じて敏arializationによりオブジェクトに変換できます。オブジェクトのシリアル化は、JVMのアクティブオブジェクトとバイト配列(ストリーム)間で簡単に変換できます。
Javaでは、オブジェクトのシリアル化と脱滑り化は、RMI(リモートメソッド呼び出し)とネットワーク伝送で広く使用されています。
関連するインターフェイスとJavaクラスは、開発者がJavaオブジェクトをシリアル化し、脱暗起するように促進するために、それをサポートする便利なAPIを提供します。これには、次のインターフェイスとクラスが含まれます。
このクラスは、java.io.serializableインターフェイスを実装することにより、シリアル化機能を有効にします。このインターフェイスを実装していないクラスは、それらの状態をシリアル化または脱必要にすることはできません。シリアル化可能なクラスのすべてのサブタイプ自体はシリアル化可能です。シリアル化インターフェイスにはメソッドやフィールドがなく、シリアル化可能なセマンティクスを識別するためにのみ使用されます。 (このインターフェイスにはメソッドとフィールドがないので、インターフェイスを機密化されるクラスのオブジェクトのみがシリアル化されるのはなぜですか?)
オブジェクトをシリアル化しようとするとき、シリアル化可能なインターフェイスをサポートしないオブジェクトが遭遇した場合。この場合、NotserializableExceptionがスローされます。
シリアル化されるクラスに親クラスがある場合、親クラスで定義された変数を同時に持続する場合、親クラスはjava.io.serializableインターフェイスも統合する必要があります。
java.io.serializableインターフェイスを実装するクラスは次のとおりです
パッケージcom.hollischaung.serialization.serializabledemos; import java.io.serializable;/*** 16/2/17にHollisによって作成されました。 int getage(){return age;} public void setage(int age){this.age = age;}@overridepublic string toString(){return "user {" + "name = '" + name +'/'' + "、age =" + age + '}';}}}次のコードを介したシリアル化と降下
パッケージcom.hollischaung.serialization.serializabledemos; import org.apache.commons.io.fileutils; import org.apache.commons.io.ioutils; Import java.io。シリアル化*/public class serializabledemo1 {public static void main(string [] args){// objectuser1 user = new user1(); user.setname( "hollis"); user.setage(23); system.out.println(user); // filobjectuttuttuttuptuptuptuttuptut oos = new; fileoutputStream( "tempfile")); oos.writeObject(user);} catch(ioexception e){e.printstacktrace();}最後に{ioutils.closequetly(oos);} // filefile file = new file( "tempfile"); objectuptuptstream ois = new {ois obsit = new; fileInputStream(file)); user1 newuser =(user1)ois.readobject(); system.out.println(newuser);} catch(ioException e){e.printStackTrace();} catch(classNotFoundException E){e.printstacktrace(); {fileutils.forcedelete(file);} catch(ioexception e){e.printstacktrace();}}}}}} // output:// user {name = 'hollis'、age = 23} // user {name = 'hollis'、age = 23}上記はこの記事に関するすべてです。誰もがJavaでオブジェクトのシリアル化と敏laserializationを学ぶことが役立つことを願っています。