如何在Java中实现序列化和反序列化?

原创 偏执的太偏执、 2024-10-12 00:06 145阅读 0赞

在Java中,我们可以使用ObjectOutputStream和ObjectInputStream来进行序列化和反序列化。

  1. 序列化(Serialization):
  • 创建一个ObjectOutputStream实例,通常会创建一个FileOutputStream到文件中。
  • 将需要序列化的对象传递给ObjectOutputStream的writeObject()方法。
  • 关闭ObjectOutputStream以释放资源。
  1. import java.io.*;
  2. public class SerializationExample {
  3. private String name;
  4. public SerializationExample(String name) {
  5. this.name = name;
  6. }
  7. // Method to be serialized
  8. public void displayInfo() {
  9. System.out.println("Name: " + name);
  10. }
  11. // Main method for serialization
  12. public static void main(String[] args) {
  13. SerializationExample obj = new SerializationExample("John Doe");
  14. // Serialize the object
  15. try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serialization.obj")))) {
  16. oos.writeObject(obj);
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. // Deserialize the object
  21. try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("serialization.obj"))))) {
  22. SerializationExample deserializedObj = (SerializationExample) ois.readObject();
  23. deserializedObj.displayInfo(); // Display the info again after deserialization
  24. } catch (IOException | ClassNotFoundException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  1. 反序列化(Deserialization):
  • 创建一个ObjectInputStream实例,通常会从文件或内存流中读取。
  • 调用ObjectInputStream的readObject()方法来反序列化对象。

注意:在处理序列化和反序列化时,需要确保类是可序列化的(如果不加任何特殊声明,大多数Java类默认可序列化)并且没有使用到final关键字。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读