java 对象序列化和反序列化代码
对象序列化是将一个对象转换成字节序列的过程,以便于在网络上传输或者保存到本地文件中。而反序列化则是将字节序列转换回对象的过程。Java中提供了一些类和方法来实现对象序列化和反序列化。
下面是一个简单的示例代码:
import java.io.*;
public class SerializeDemo {
public static void main(String[] args) {
// 创建一个Person对象
Person person = new Person("Tom", 18);
// 将对象序列化到文件中
serializeObject(person, "person.ser");
// 从文件中反序列化对象
Person newPerson = (Person) deserializeObject("person.ser");
System.out.println("Name: " + newPerson.getName());
System.out.println("Age: " + newPerson.getAge());
}
// 将对象序列化到文件中
public static void serializeObject(Object obj, String filename) {
try {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.close();
fos.close();
System.out.println("Serialized Object saved in " + filename);
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件中反序列化对象
public static Object deserializeObject(String filename) {
Object obj = null;
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
obj = ois.readObject();
ois.close();
fis.close();
System.out.println("Deserialized Object loaded from " + filename);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return obj;
}
}
// 实现Serializable接口的Person类
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;
}
}
运行结果:
Serialized Object saved in person.ser
Deserialized Object loaded from person.ser
Name: Tom
Age: 18
在上面的示例代码中,我们定义了一个Person类,并实现了Serializable接口。然后我们创建了一个Person对象并将其序列化到文件中。接着我们从文件中反序列化对象,并打印出其属性值。在序列化和反序列化过程中,我们分别使用了ObjectOutputStream和ObjectInputStream来执行序列化和反序列化操作。注意,在序列化和反序列化过程中,我们需要使用try-catch语句来处理可能的异常。
原文地址: http://www.cveoy.top/t/topic/sep 著作权归作者所有。请勿转载和采集!