21xrx.com
2025-01-03 19:02:48 Friday
登录
文章检索 我的文章 写文章
Java类的两种序列化方法
2023-07-12 18:36:49 深夜i     --     --
Java类 序列化 方法

Java是一种面向对象的编程语言,提供了多种序列化方法,其中最常用的是Java类的序列化和反序列化。这两种方法都用于将Java类对象转换为字节数组以便于传输和存储,并重新将其转换为对象。

Java类的序列化是指将Java类对象转换为字节数组的过程。该过程可以通过Java类实现序列化接口和使用ObjectOutputStream类来实现。要使Java类对象可序列化,必须使类实现序列化接口Serializable:


public class Student implements Serializable

  private String name;

  private int age;

  private String grade;

  // 省略 getter、setter 方法和构造方法

然后,可以创建一个 ObjectOutputStream 对象,并使用它的 writeObject()方法将 Java 类写入输出流中:


try {

  FileOutputStream fileOut = new FileOutputStream("student.ser");

  ObjectOutputStream out = new ObjectOutputStream(fileOut);

  out.writeObject(student);

  out.close();

  fileOut.close();

} catch (IOException e) {

  e.printStackTrace();

}

反序列化是将字节数组转换为 Java 类对象的过程。反序列化可以通过使用 ObjectInputStream 类来完成,如下所示:


try {

  FileInputStream fileIn = new FileInputStream("student.ser");

  ObjectInputStream in = new ObjectInputStream(fileIn);

  Student student = (Student) in.readObject();

  in.close();

  fileIn.close();

} catch (IOException e) {

  e.printStackTrace();

} catch (ClassNotFoundException e) {

  e.printStackTrace();

}

另一种 Java 类对象的序列化方法是使用 Java 序列化器。Java 序列化器是通过创建一个工厂对象来序列化和反序列化 Java 类对象。要使用 Java 序列化器,需要下载和安装 Java Serialization API 。一旦安装了 API,就可以将序列化器添加到程序中:


Object obj = new Student("Hayden", 23, "A");

ByteArrayOutputStream out = new ByteArrayOutputStream();

try (ObjectOutputStream outputStream = new ObjectOutputStream(out)) {

  Serialization.serialize(outputStream, obj);

} catch (IOException e) {

  e.printStackTrace();

}

在上面的代码中,Serialization.serialized()方法将 Java 类对象序列化为字节数组,并将其写入输出流中。要使用反序列化程序重新创建 Java 类对象,可以使用以下代码:


Object obj = new Student("Hayden", 23, "A");

ByteArrayOutputStream out = new ByteArrayOutputStream();

try (ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray())) {

  Serialization.deserialize(inputStream, obj);

} catch (IOException e) {

  e.printStackTrace();

}

无论您是使用 Java 类实现序列化接口还是使用 Java 序列化器,都需要了解 Java 字节数组的格式。Java 序列化程序为存储序列化的 Java 对象使用特殊的字节格式。在进行反序列化时,这些字节可被重新解密为可用的 Java 对象。了解这些详细信息可以帮助您更好地跟踪错误和修正问题。

回归主题,Java 类有两种序列化的方法:Java 类实现序列化接口和使用 Java 序列化器。要最大程度地利用这些序列化方法,应了解如何序列化和反序列化 Java 对象,并阅读有关 Java 字节数组到对象转换的更多详细信息。serialization 在 Java 中扮演着非常重要的角色,是每位 Java 从业者需要精通的一项技能。

  
  

评论区

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