21xrx.com
2025-07-15 09:15:38 Tuesday
文章检索 我的文章 写文章
Java类实现Serializable:如何将对象序列化和反序列化
2023-06-23 10:22:19 深夜i     19     0
Java类 Serializable 对象序列化 反序列化

Java是一种非常流行的编程语言,它支持许多高级编程技术和面向对象的概念。其中一个很有用的技术是对象序列化,它使得我们可以将一个Java对象转换为二进制格式,然后可以在不同计算机之间传输或存储。

在Java中实现对象序列化需要实现Serializable接口。这个接口是一个标记接口,只有标记了Serializable接口的对象才能够被序列化和反序列化。在Java中,序列化和反序列化都是很容易的,只需要简单的几个步骤。

首先,我们需要创建一个Java对象,要想这个对象能够被序列化,需要在类的声明中加入implements Serializable。例如:

public class Person implements Serializable {
  private static final long serialVersionUID = 1L;
  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;
  
}

在这里,我们创建了一个Person类,并且标记了Serializable接口。这个类中有两个属性,一个name属性和一个age属性。

接下来,我们需要将这个对象序列化为二进制格式。序列化可以通过将对象写入ObjectOutputStream来完成。以下是一个示例代码:

Person person = new Person("Tom", 25);
try {
  FileOutputStream out = new FileOutputStream("person.ser");
  ObjectOutputStream objectOut = new ObjectOutputStream(out);
  objectOut.writeObject(person);
  objectOut.close();
} catch (IOException ex) {
  ex.printStackTrace();
}

在这里,我们将Person对象写入了一个名为“person.ser”的文件中。

最后,我们需要将Person对象反序列化回来。这可以通过将二进制文件读入ObjectInputStream并将其转换成Person对象来完成。以下是一个示例代码:

try {
  FileInputStream in = new FileInputStream("person.ser");
  ObjectInputStream objectIn = new ObjectInputStream(in);
  Person person = (Person) objectIn.readObject();
  objectIn.close();
  System.out.println(person.getName());
  System.out.println(person.getAge());
} catch (IOException | ClassNotFoundException ex) {
  ex.printStackTrace();
}

这里我们读取了先前序列化的Person对象,并将其转换为Person类的实例。最后,我们输出了这个对象的name和age属性。

Java的Serializable接口为对象序列化和反序列化提供了一个简单的方法。只需要在类的声明中标记Serializable接口,并使用ObjectOutputStream和ObjectInputStream就可以轻松地进行序列化和反序列化。

  
  

评论区