JAVA实现序列化与反序列化
时间: 2023-05-31 19:02:49 浏览: 79
Java中的序列化是将Java对象转换为字节流的过程,以便将其存储在文件中或在网络上传输。反序列化是将字节流转换回Java对象的过程。
要实现Java的序列化和反序列化,需要使用Java中的Serializable接口。该接口是一个标记接口,不需要实现任何方法,只需要在需要序列化的类中实现该接口即可。
序列化示例代码:
```java
import java.io.*;
public class Student implements Serializable {
private String name;
private int age;
private String gender;
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public void serialize() {
try {
FileOutputStream fileOut = new FileOutputStream("student.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(this);
out.close();
fileOut.close();
System.out.println("Serialized data is saved in student.ser");
} catch (IOException i) {
i.printStackTrace();
}
}
}
```
反序列化示例代码:
```java
import java.io.*;
public class Student implements Serializable {
private String name;
private int age;
private String gender;
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public static void deserialize() {
try {
FileInputStream fileIn = new FileInputStream("student.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
Student student = (Student) in.readObject();
in.close();
fileIn.close();
System.out.println("Deserialized data is:");
System.out.println("Name: " + student.name);
System.out.println("Age: " + student.age);
System.out.println("Gender: " + student.gender);
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
System.out.println("Student class not found");
c.printStackTrace();
}
}
}
```
在上面的代码中,我们定义了一个Student类,该类实现了Serializable接口。我们定义了一个名为serialize()的方法,该方法将Student对象序列化到文件student.ser中。我们还定义了一个名为deserialize()的方法,该方法从文件student.ser中反序列化Student对象,并将其打印到控制台上。
要使用这些方法,我们可以在主函数中创建一个Student对象,并调用serialize()方法将其序列化到文件中。然后,我们可以调用deserialize()方法从文件中反序列化Student对象。