シリアル化と逆シリアル化は、Java オブジェクトとバイト シーケンスの相互変換を指します。これらは一般に、Java でのシリアル化と逆シリアル化の 2 つの簡単な例を示します。シーケンスと逆シリアル化:
1. Java のシリアル化と逆シリアル化
Java のシリアル化とは、Java オブジェクトをバイト シーケンスに変換するプロセスを指し、Java 逆シリアル化とは、バイト シーケンスを Java オブジェクトに復元するプロセスを指します。
2. シリアル化と逆シリアル化が必要な理由
2 つのプロセスがリモートで通信するとき、テキスト、画像、オーディオ、ビデオなどのさまざまな種類のデータを相互に送信できることがわかっています。バイナリ シーケンスはネットワーク経由で送信されます。では、2 つの Java プロセスが通信するとき、プロセス間のオブジェクトの転送は実現できるのでしょうか?答えは「はい」です。どうやってするの?これには、Java のシリアル化と逆シリアル化が必要です。つまり、送信者は Java オブジェクトをバイト シーケンスに変換してネットワーク経由で送信する必要があり、他方、受信者はバイト シーケンスから Java オブジェクトを復元する必要があります。
(1) シリアル化と逆シリアル化ファイル:
import java.io.*; @SuppressWarnings("serial") class Person implements Serializable { public Person(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; public String sex; public int age; public int height; } public class SerialTest { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { Person p = new Person("Jim", "male", 28, 194); // 开始序列化 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( new File("myTest.txt"))); oos.writeObject(p); // 反序列化 ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File("myTest.txt"))); Person p1 = (Person) ois.readObject(); System.out.println(p1.toString()); } }(2) クラスへの XML 逆シリアル化:
import java.io.*; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; @SuppressWarnings("serial") class RoadInfo implements Serializable { public int id; public long MDN; public String NAME; public double LNG; public double LAT; public String ICON; } @SuppressWarnings("serial") class table_list implements 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-generated method stub 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()); } }上記は、Java でのシリアル化と逆シリアル化の簡単な例の内容です。 PHP 中国語 Web サイト (www.php.cn) にご注意ください。