天天动画片 > 八卦谈 > serialVersionUID——愿你出走半生,归来仍是少年

serialVersionUID——愿你出走半生,归来仍是少年

八卦谈 佚名 2024-04-14 00:29:02

        相信很多人对 serialVersionUID 并不陌生,当然,也可能算不上熟悉(不然我为毛要写这东东)。代码里或多或少都加过这玩意儿(你不加的话,idea老提示你,你不烦?),但为嘛要加这个呢,加上了到底有嘛用?可能知道的人并不多。接下来就让我们聊聊程序员与serialVersionUID 之间的二三事。

        一般我们要讨论一个东西的用处,总是从有它的时候是怎样,没它的时候又是怎样,然后两者一对比,用处大概就呼之欲出了。设想这样一个场景,一个对象被序列化后保存在某个地方,比如说文件系统,然后反序列化回来的时候我咋知道进来的这个玩意儿还是原先出去的那个呢?好像莫得办法吧。这就有点像真假美猴王,我咋知道现在回来的猴子就是刚刚离开的猴子呢?再设想一下,要是我给出去的对象打上一个标记呢,这个标记在对象的属性一旦发生任何变化都会强制地也发生变化。这样一来只要将回来的对象的这个标记与出去的那个一比对,只要不一样就抛个异常,这样问题是不是就迎刃而解了呢?(感情这个标记只有如来佛祖能看到)serialVersionUID 就相当于这个标记,而编译器就是那个负责生成标记的人。当然了,还是推荐显示地指定serialVersionUID ,靠编译器自动生成有点不靠谱,毕竟serialVersionUID 的生成与编译器的具体实现有关。

        综上所述,其实serialVersionUID解决的就是如何判断我还是从前那个少年,没有一丝丝改变。

        最后提一嘴,serialVersionUID 必须是static、final的long类型值。


        


本文标题:serialVersionUID——愿你出走半生,归来仍是少年 - 八卦谈
本文地址:www.ttdhp.com/article/54212.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们