1。Javaのシリアル化と脱介入
Javaのシリアル化とは、Javaオブジェクトをバイトシーケンスに変換するプロセスを指します。 Java Deserializationとは、バイトシーケンスをJavaオブジェクトに復元するプロセスを指します。
2.シリアル化と脱派化が必要な理由
2つのプロセスがリモートで通信すると、テキスト、写真、オーディオ、ビデオなどを含むさまざまな種類のデータを相互に送信できることがわかり、これらのデータはバイナリシーケンスの形でネットワーク上に送信されることがわかります。 2つのJavaプロセスが通信すると、プロセス間でオブジェクト伝送を実現できますか?答えはイエスです。それをする方法は?これには、Javaのシリアル化と敏arializationが必要です。言い換えれば、一方では、送信者はこのJavaオブジェクトを一連のバイトに変換し、ネットワークに送信する必要があります。一方、レシーバーは、バイトのシーケンスからJavaオブジェクトを復元する必要があります。
Javaのシリアル化と脱介入が必要な理由を理解するとき、当然、Javaのシリアル化の利点について考えます。利点は、最初にデータの持続性が実現することです。シリアル化により、データはハードディスク(通常はファイルに保存されます)に永久に保存できます。第二に、シリアル化は、リモート通信を実現するために使用されます。つまり、ネットワーク上のオブジェクトのバイトシーケンスを送信します。
3。例:
(1)ファイルをシリアル化して脱必要にします:
java.io.*をインポートします。 @suppresswarnings( "serial")クラスの人はserializable {string name、string sex、int age、int height){this.name = name; this.sex = sex; this.age = age; this.height = height; } public string toString(){return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.height + "|"; } public string name;パブリックストリングセックス;公共のint年齢;パブリックイントハイト; } public class serialtest {public static void main(string [] args)throws filenotfoundexception、ioexception、classNotFoundException {iners P = new Person( "jim"、 "male"、28、194); // SERIALIZING OBLECTOUTPUTSTREAM OOS = new objectOutputStream(new FileOutputStream(new file( "mytest.txt"))); oos.writeobject(p); // objectInputStream ois = new objectInputStream(new fileInputStream(new file( "mytest.txt")));人p1 =(人)ois.readobject(); system.out.println(p1.toString()); }}
(2)XMLクラスへの降下:
java.io.*をインポートします。 com.thoughtworks.xstream.xstreamをインポートします。 com.thoughtworks.xstream.io.xml.domdriverをインポートします。 @suppresswarnings( "serial")class roadinfoはserializable {public int id;パブリックロングMDN;パブリック文字列名;パブリックダブルLNG;パブリックダブルラット;パブリック文字列アイコン。 } @suppresswarnings( "serial")class table_listはserializable {public string toString(){stringbuffer sb = new StringBuffer(); for(roadinfo r:sequence){sb.append( "|"); sb.append(r.id); sb.append( "|"); sb.append(r.mdn); sb.append( "|"); sb.append(r.name); sb.append( "|"); sb.append(r.lng); sb.append( "|"); sb.append(r.lat); sb.append( "|"); sb.append(r.icon); sb.append( "|/n"); } return sb.toString(); } public table_list(int count){sequence = new roadinfo [count]; for(int i = 0; i <count; i ++){sequence [i] = new roadInfo(); }} public roadinfo [] sequence; } public class xmltest { / ** * @param args * / public static void main(string [] args)throws exception {// todo auto-eneratedメソッドスタブStringbuffer sb = new StringBuffer(); BufferedReader Reader = new BufferedReader(new FileReader(new File( "friend_msg.xml"))); while(true){string s = reader.readline(); //行を読むif(s == null){break; } sb.append(s); } XStream XS = new XStream(new domdriver()); table_list db =(table_list)xs.fromxml(sb.tostring()); system.out.println(db.toString()); }}