serialVersionUID是干什么用的

序列化

使Java的对象可以序列化, 但是为什么需要这个id呢. 这个序列化的对象, 在写入(序列化)和读取(反序列化)的时候有可能存在差异. 那么Java就用这个serialVersionUID值是否相同来判断序列化的对象是否一致. 如果两个对象的serialVersionUID都不一致, 那肯定就没办法序列化了.

例子

import java.io.Serializable;

public class Person implements Serializable {

    private static final long serialVersionUID = 7371845487964803604L;

    private String          name;

    private int             id;

    public Person(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

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

序列化

import java.io.*;

public class DeserialTest {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Person person;
        FileInputStream fileInputStream = new FileInputStream("person.txt");
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        person = (Person)objectInputStream.readObject();
        System.out.println(person);
    }
}

反序列化

import java.io.*;

public class DeserialTest {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Person person;
        FileInputStream fileInputStream = new FileInputStream("person.txt");
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        person = (Person)objectInputStream.readObject();
        System.out.println(person);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 13,758评论 0 24
  • Android跨进程通信IPC整体内容如下 1、Android跨进程通信IPC之1——Linux基础2、Andro...
    隔壁老李头阅读 14,142评论 6 38
  • 一、 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化de...
    步积阅读 5,278评论 0 10
  • 我们时常因繁繁琐琐的杂事缠身,而心身疲惫;没有闲情感受大自然优美的律动。 我们经常为纷纷杂杂的烦忧扰心,而焦躁难宁...
    黄耀毅阅读 2,515评论 0 0
  • 《炒股的智慧》摘抄 特殊的赌局 一、股票充满诱惑性 什么是股票?它代表着上市公司的一份子。 股票的诞生依赖于其所代...
    苔米如花阅读 4,622评论 1 2

友情链接更多精彩内容