21xrx.com
2025-03-17 00:59:48 Monday
文章检索 我的文章 写文章
最近在学习Java的对象序列化
2023-06-10 12:02:13 深夜i     14     0
Java writeObject 对象序列化

最近在学习Java的对象序列化,通过Java的writeObject方法实现将对象转化为二进制流的过程以及如何将二进制流转化为对象。

首先介绍writeObject方法的基本用法,我们可以直接在自定义类中实现Serializable接口,并且重写writeObject方法实现对象序列化:

public class Student implements Serializable {
  // 定义学生类的属性和方法
  private void writeObject(ObjectOutputStream out) throws IOException
    // 实现序列化
  
}

在writeObject方法中我们需要调用ObjectOutputStream类的writeObject方法将对象序列化成二进制流。

接下来,我将使用一个简单的例子来演示Java的对象序列化过程。

我们定义一个Person类并实现Serializable接口:

import java.io.Serializable;
public 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;
  
}

然后我们创建一个对象实例并将其序列化:

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class SerializeDemo {
  public static void main(String[] args) {
    Person person = new Person("John", 25);
    try {
      FileOutputStream fileOut = new FileOutputStream("person.ser");
      ObjectOutputStream out = new ObjectOutputStream(fileOut);
      out.writeObject(person);
      out.close();
      fileOut.close();
      System.out.println("Serialized data is saved in person.ser");
    } catch (IOException i) {
      i.printStackTrace();
    }
  }
}

上述代码中,我们将对象序列化并存储在名为person.ser的文件中。

最后,我们可以使用下面的代码将二进制流反序列化成一个Person对象:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class DeserializeDemo {
  public static void main(String[] args) {
    Person person = null;
    try {
      FileInputStream fileIn = new FileInputStream("person.ser");
      ObjectInputStream in = new ObjectInputStream(fileIn);
      person = (Person) in.readObject();
      in.close();
      fileIn.close();
    } catch (IOException i) {
      i.printStackTrace();
      return;
    } catch (ClassNotFoundException c) {
      System.out.println("Person class not found");
      c.printStackTrace();
      return;
    }
    System.out.println("Deserialized Person...");
    System.out.println("Name: " + person.getName());
    System.out.println("Age: " + person.getAge());
  }
}

上述代码中,我们读取名为person.ser的文件并将其反序列化成一个Person对象,并输出该对象的名字和年龄信息。

在Java的writeObject方法中,由于我们需要自行处理对象序列化的过程,因此可以对对象序列化的过程做一些自定义的处理,比如对一些敏感信息进行加密处理等。这样就可以实现更加灵活的序列化方式。

总之,Java的对象序列化是非常方便且常用的一种序列化方式,可以轻松实现对象的存储与传递,同时还可以通过自定义处理实现更加灵活的序列化方式。

标题:Java的writeObject方法实现对象序列化

  
  

评论区

    相似文章