Java完整实现自定义序列化类,要求该类可以实现编号,姓名,年龄的序列化
时间: 2023-07-18 07:08:37 浏览: 72
要实现自定义序列化类,需要满足以下步骤:
1. 实现 java.io.Serializable 接口,这个接口没有任何方法,只是一个标识,表示该类可以被序列化。
2. 定义一个 serialVersionUID,这个值是为了确保序列化和反序列化时,对象的版本一致。
3. 在类中添加 writeObject 和 readObject 方法,这两个方法是在对象序列化和反序列化时被调用的。
下面是一个示例代码,实现了编号、姓名、年龄的序列化:
```java
import java.io.*;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int age;
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.writeInt(id);
out.writeObject(name);
out.writeInt(age);
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
id = in.readInt();
name = (String) in.readObject();
age = in.readInt();
}
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public static void main(String[] args) throws Exception {
Person p1 = new Person(1, "Tom", 20);
System.out.println("序列化前:" + p1);
// 将对象序列化到文件中
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));
oos.writeObject(p1);
oos.close();
// 从文件中反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));
Person p2 = (Person) ois.readObject();
ois.close();
System.out.println("序列化后:" + p2);
}
}
```
输出结果为:
```
序列化前:Person [id=1, name=Tom, age=20]
序列化后:Person [id=1, name=Tom, age=20]
```
阅读全文