什么是 Java 的序列化,如何实现 Java 的序列化?

对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序。从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。序列化是为了解决在对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法,只是用于标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream 对象,接着使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法可以将参数为 obj 的对象写出,要恢复的话则使用输入流。

发表评论

后才能评论

评论(4)

  • rq 2021-08-09 4:00 下午

    import java.io.*;
    class Student2 implements Serializable
    {
    private static final long serialVersionUID = 1L;
    private String name=”李青”;
    private int id=6;
    public String getname()
    {
    return name;
    }
    public int getid()
    {
    return id;
    }

    }

    public class praxuliehua {
    public void Serialization()//序列化
    {
    try
    {
    FileOutputStream f=new FileOutputStream(“D:/eclipse//test2.txt”);
    ObjectOutputStream oos=new ObjectOutputStream(f);
    Student2 stu=new Student2();
    oos.writeObject(stu);
    System.out.println(“序列化成功!”);
    oos.flush();
    oos.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }

    }
    public void DeSerialization()//反序列化
    {
    try
    {
    FileInputStream f=new FileInputStream(“D:/eclipse//test2.txt”);
    ObjectInputStream oos=new ObjectInputStream(f);
    Student2 stu=(Student2)oos.readObject();
    System.out.println(stu.getid()+” “+stu.getname());
    oos.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    praxuliehua p=new praxuliehua();
    p.Serialization();
    p.DeSerialization();
    }
    }

  • kite 普通 2021-06-27 11:11 上午

    public class Demo {
    public static void main(String[] args) {

    ObjectOutputStream oos;
    ObjectInputStream ois;
    try {
    oos = new ObjectOutputStream(new FileOutputStream(“d:/a.txt”));
    ois = new ObjectInputStream(new FileInputStream(“d:/a.txt”));
    // 序列化
    oos.writeObject(new User());
    // 反序列化
    Object user = ois.readObject();
    System.out.println(user);
    } catch (IOException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }

    }
    }

    class User implements Serializable{
    private String name = “zhangsan”;

    @Override
    public String toString() {
    return name;
    }
    }