21xrx.com
2024-12-23 01:37:23 Monday
登录
文章检索 我的文章 写文章
Java类实现Serializable:如何将对象序列化和反序列化
2023-06-23 10:22:19 深夜i     --     --
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就可以轻松地进行序列化和反序列化。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复