如何使用Java函数实现对象序列化及反序列化
发布时间:2023-07-02 07:41:32
Java提供了一种方便的方式来实现对象的序列化和反序列化,即通过实现Serializable接口。下面将详细介绍如何使用Java函数实现对象的序列化和反序列化。
1. 创建一个Java类,实现Serializable接口。例如,我们创建一个Person类:
import java.io.Serializable;
public class Person implements Serializable {
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;
}
}
2. 通过FileOutputStream和ObjectOutputStream将对象序列化到文件中。例如,我们将Person对象序列化到person.ser文件中:
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class SerializationDemo {
public static void main(String[] args) {
Person person = new Person("Tom", 25);
try {
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(person);
out.close();
fileOut.close();
System.out.println("对象已被序列化到 person.ser 文件中。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 通过FileInputStream和ObjectInputStream从文件中反序列化对象。例如,我们从person.ser文件反序列化Person对象:
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class DeserializationDemo {
public static void main(String[] args) {
try {
FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
Person person = (Person) in.readObject();
in.close();
fileIn.close();
System.out.println("从 person.ser 文件中反序列化对象成功。");
System.out.println("姓名:" + person.getName());
System.out.println("年龄:" + person.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过以上步骤,我们可以实现对象的序列化和反序列化。需要注意的是,被序列化的类必须实现Serializable接口,并且其中的所有非静态成员变量也必须是可序列化的。可以通过transient关键字来标记不需要序列化的成员变量。
