转载自:https://blog.csdn.net/hetongun/article/details/81904393
序列化和反序列化
Java是面向对象的语言,与其他语言进行交互(比如与前端js进行http通信),需要把对象转化成一种通用的格式比如json(前端显然不认识Java对象),从对象到json字符串的转换,就是序列化的过程,反过来,从json字符串转换成Java对象,就是反序列化的过程。
serialVersionUID是什么
反序列化的过程,需要从一个json字符串生成一个Java对象。
这时候会有问题,需要验证输入的json字符串是否是从当前的Request这个类序列化过去的,serialVersionUID就是用来干这个的。当序列化的时候的serialVersionUID与反序列化的时候的serialVersionUID不一致的时候,会跑出InvalidCalssException。
====================================================================
具体的序列化过程是这样的:序列化操作的时候系统会把当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会去检测文件中的serialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败。
如何生成
首先我们会实现接口,那么如何自动生成serialVersionUID呢。
1、没有设置之前,选中对应的类名,然后按 alt+enter 快捷键 的情况如下所示
2、设置自动生成 serialVersionUID 的方式如下图所示
3、设置之后,选中对应的类名,然后按 alt+enter 快捷键 的情况如下所示
4、点击就可以自动生成了。