Java中序列化与反序列化
时间: 2023-08-29 10:12:30 浏览: 75
在Java中,序列化是将对象转换为字节流的过程,以便将其存储在磁盘上或通过网络传输。而反序列化则是将字节流转换回对象的过程。
下面是一个示例,演示如何序列化和反序列化一个Java对象:
```java
import java.io.*;
public class SerializationExample {
public static void main(String[] args) {
// 创建一个Person对象
Person person = new Person("Alice", 30);
try {
// 将Person对象序列化到文件中
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(person);
out.close();
fileOut.close();
System.out.println("Person对象已经序列化到person.ser文件中");
} catch (IOException e) {
e.printStackTrace();
}
try {
// 将Person对象从文件中反序列化出来
FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
Person serializedPerson = (Person) in.readObject();
in.close();
fileIn.close();
System.out.println("从person.ser文件中反序列化出的Person对象:");
System.out.println("姓名:" + serializedPerson.getName());
System.out.println("年龄:" + serializedPerson.getAge());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
运行该程序,它会将一个Person对象序列化到文件person.ser中,并从该文件中反序列化出Person对象,并将其打印出来。
需要注意的是,要将一个对象序列化,该对象的类必须实现java.io.Serializable接口。否则,将会抛出NotSerializableException异常。