关于javabean显式UID的作用

编程技术  /  houtizong 发布于 3年前   73


如果一个javabean实现了Serializable接口,那么它可以实现序列化,也就有了网络传输、本地存储等功能。在这个类中经常会看到一个SerialVersionUID,它的作用是这样的:

首先,实现序列化的类中如果没有显式声明SerialVersionUID,这个类在编译时,编译器会生成一个唯一的,隐式的UID,这个UID是由很多因素决定的,包括类的非私有方法和属性等,那么当这个类做了一些改动,比如说增加了一个属性,那么再次编译时,隐式UID会改变。也就是说,隐式的UID标示了类的一个版本。在数据传输过程中,JVM在反序列化操作时,如果发现反序列化的类的隐式UID和数据流中的类隐式UID不同,会认为这个类版本发生了改变,将抛出InvalidClassException异常。

那么,如果一个类的改动并不大,但仍然想正常地进行反序列化,该如何呢?答案是显示地规定一个SerialVersionUID,当类做了改动,但SerialVersionUID不变,JVM在反序列化时,会认为数据流中的类和本地的这个类仍属于同一版本,那么反序列化是可以进行的,这样会增加程序的健壮性。

所以,当一个类实现了序列化接口时,最好显式地声明一个UID,这样可以避免一些不必要的问题。

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客