色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java序列化和反序列化網絡編程

周雨萌1年前6瀏覽0評論

Java序列化和反序列化是網絡編程中常用的技術之一。在網絡編程中,序列化和反序列化可以將一個Java對象轉換成字節流的形式,并在不同的網絡設備之間傳輸。

Java中提供了ObjectOutputStreamObjectInputStream來實現序列化和反序列化。下面是一個例子:

import java.io.*;
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "Name: " + name + ", Age: " + age;
}
}
public class Serialization {
public static void main(String[] args) {
Person p = new Person("Tom", 20);
try {
// 將對象序列化
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(p);
out.close();
fileOut.close();
// 將對象反序列化
FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
Person p1 = (Person) in.readObject();
in.close();
fileIn.close();
System.out.println(p1);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}

在上面的例子中,我們首先創建一個實現了Serializable接口的Person類。該接口表示該類可以被序列化。我們將一個Person對象序列化并保存在文件“person.ser”中。然后,我們使用ObjectInputStream將文件讀取回來并反序列化成一個Person對象。

需要注意的是,如果我們在序列化/反序列化期間更改了Person類的屬性,也就是說,Person類的版本不同,那么我們將無法成功反序列化對象。這時,會拋出InvalidClassException,因為我們的字節流不再與我們的類相兼容。