serialVersionUID作用

目录结构
在这里插入图片描述

User类

import java.io.Serializable;

public class User implements Serializable{
    private static final long serialVersionUID= 123456L;
    public String name;

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

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


test01写入

import java.io.*;

public class test01 {
    public static void main(String[] args) throws IOException {
        User user =new User();
        user.setName("ti 的 name");
        System.out.println(user.toString());
        FileOutputStream out = new FileOutputStream("./user.txt");
        ObjectOutputStream bout = new ObjectOutputStream(out);
        bout.writeObject(user);
        //使用此方法将所有信息从基础缓冲区移动到其目标或清除缓冲区,或者同时执行这两种操作。
        bout.flush();
        bout.close();
        System.out.println("写入完成");
    }


}

test02读出

import java.io.*;

public class test02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileInputStream in = new FileInputStream("./user.txt");
        ObjectInputStream obin = new ObjectInputStream(in);

        User user = (User) obin.readObject();
        obin.close();
        System.out.println(user.toString());
    }

}

运行test01将对象写入文件
运行test02将文件读出转换成对象
可以正常序列化和反序列化

读出前将serialVersionUID改变= 123451L;则会报错:

Exception in thread "main" java.io.InvalidClassException: User; local class incompatible: stream classdesc serialVersionUID = 123456, local class serialVersionUID = 123451

反序列化失败;

serialVersionUID是控制版本号的;确保序列化反序列化的代码一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值