Java序列化

1.定义:

Java序列化就是指把Java对象转换为字节序列的过程
Java反序列化就是指把字节序列恢复为Java对象的过程。


image.png

2.用法

    static class Person implements Serializable {
  public static final long serialVersionUID = 114514L;
        String name;
        int id;
        Person(String name,int id){
            this.id = id;
            this.name = name;
        }

        @Override
        public String toString() {
            return "person{" +
                    "name='" + name + '\'' +
                    ", id=" + id +
                    '}';
        }
    }

    public static void main(String[] args) throws IOException {

        //序列化
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("D:\\114514.txt"));
            oos.writeObject(new Person("cu",3));
            oos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (oos != null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        
        //反序列化
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream(new FileInputStream("D:\\114514.txt"));
            Person person = (Person) ois.readObject();
            System.out.println(person);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (ois != null) {
                ois.close();
            }
        }

    }
序列化

反序列化

3.说明

1.其中serialVersionUID常量是当前类的唯一标识符,若未指定它将对象序列化后修改了类,就会出现错误。
2.除当前类要实现Serializable接口外,还要保持其所有的成员属性都实现(基本数据类型默认已实现)
[内部类Car实现了Serializable接口]


image.png

3.不会序列化被static和transient修饰的属性

你可能感兴趣的:(Java序列化)