美文网首页
serialVersionUID作用

serialVersionUID作用

作者: 紫色红色黑色 | 来源:发表于2019-12-05 00:32 被阅读0次

描述

实现Serializable接口时,会提示声明serialVersionUID。本文说明serialVersionUID的作用。

解释

serialVersionUID是java类的版本标识。
在网络传输和持久化的时候会将对象序列化。在反序列化中,如果提供方和接受方的serialVersionUID不一致,会抛出InvalidClassException

1L和generated

IDE提示两种生成serialVersionUID策略。

第一种用于版本兼容,比如serialVersionUID=1L,然后修改类后想兼容之前的数据,就不更改这个值。如果修改这个值就不兼容了。

第二种生成是根据类名、方法名、字段信息,如果类修改了则重写生成serialVersionUID就会不同。

serialVersionUID=1L
serialVersionUID=8048209891021508979L

代码

public static void main(String[] args) {

    Dog lucy = new Dog("lucy", 4, "Smith");
    File file = new File("/Users/lucy/Desktop/lucy.out");
    try {

        // 序列化
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
        out.writeObject(lucy);
        out.close();

        // 反序列化
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
        Object o = in.readObject();
        in.close();
        System.out.println(o);

    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}

引用

https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/what-is-a-serialversionuid-and-why-should-i-use-it.md
https://blog.csdn.net/fbysss/article/details/5844478

相关文章

网友评论

      本文标题:serialVersionUID作用

      本文链接:https://www.haomeiwen.com/subject/pgprgctx.html